欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > 环状DNA序列整理

环状DNA序列整理

2024/10/23 23:22:49 来源:https://blog.csdn.net/2301_79218588/article/details/143136739  浏览:    关键词:环状DNA序列整理

环状 DNA 又称超螺旋,即一段碱基序列呈现环状,在分析时,需要将相同序列的环状 DNA 分到相同组内,现需将环状碱基序列按照最小表示法进行排序。

一段长度为 `n` 的碱基序列,按照顺时针方向,碱基序列可以从任意位置起开始该序列顺序,因此长度为 `n` 的碱基序列有 `n` 种表示法。例如:长度为 6 的碱基序列 `CGAGTC`,有 `CGAGTC`、`GAGTCC`、`AGTCCG` 等表示法。在这些表示法中,字典序最小的称为“最小表示”。

输入一个长度为 `n`(`n <= 100`)的环状碱基序列(只包含 `A`、`C`、`G`、`T` 这 4 种碱基)的一种表示法,输出该环状碱基序列的最小表示。

例如:

`ATCA` 的最小表示是 `AATC`

`CGAGTC` 的最小表示是 `AGTCCG`

 输入描述

一段 DNA 碱基序列

输出描述

DNA 碱基序列的最小表示

**备注**:

`n <= 100`

DNA 由大写英文字母 `A`、`G`、`C`、`T` 组成

**示例 1**

输入:`ATCA`

输出:`AATC`

**示例 2**

输入:`CGAGTC`

输出:`AGTCCG`

#include <iostream>
#include <string>std::string solution(std::string dna_sequence) {int n = dna_sequence.length();std::string min_rep = dna_sequence; // 初始化最小表示为原始序列// 生成所有可能的表示法for (int i = 1; i < n; ++i) {std::string rotated = dna_sequence.substr(i) + dna_sequence.substr(0, i);if (rotated < min_rep) {min_rep = rotated; // 更新最小表示}}return min_rep;
}int main() {// 你可以在这里添加更多的测试用例std::cout << (solution("ATCA") == "AATC") << std::endl;std::cout << (solution("CGAGTC") == "AGTCCG") << std::endl;std::cout << (solution("TCATGGAGTGCTCCTGGAGGCTGAGTCCATCTCCAGTAG") == "AGGCTGAGTCCATCTCCAGTAGTCATGGAGTGCTCCTGG") << std::endl;return 0;
}

后记:报名线上字节青训,要入营需要AC多道题,但又不知道AC不AC,听说是AI判题

咯咯哒觉得AI很牛,它到底咋检测输入输出的,是只看结果True?我总以为代码改写成这样的,题目给的原代码是不是不能改啊……

#include <iostream>
#include <string>std::string minRepresentation(const std::string& dna) {std::string doubled_dna = dna + dna; // 将 DNA 序列重复一次std::string min_rep = dna; // 初始化最小表示为原始 DNAint n = dna.length();// 遍历所有可能的起始位置for (int i = 1; i < n; ++i) {std::string current_rep = doubled_dna.substr(i, n); // 获取当前表示法if (current_rep < min_rep) { // 更新最小表示min_rep = current_rep;}}return min_rep;
}int main() {std::string dna_sequence;std::cin >> dna_sequence; // 输入 DNA 序列std::cout << minRepresentation(dna_sequence) << std::endl; // 输出最小表示return 0;
}

 真不放心又回报名网页里头看,是不是只支持Java和python。。。补药哇我想入营——

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com