题解 | #DNA序列#
DNA序列
https://www.nowcoder.com/practice/e8480ed7501640709354db1cc4ffd42a
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
int main() {
string s;
float n,len,max_r = -1;
cin >> s;
cin >> n;
len = s.size();
int num = len-n+1;
vector<float> lens(num,0);
for(int i=0; i<num; i++){
float tmp = 0;
for(int j=i; j<i+n; j++){
if(s[j] == 'C' || s[j] == 'G'){
tmp++;
}
}
float res = tmp/n;
max_r = max(res,max_r);
lens[i] = res;
// cout << "res" << res << endl;
// cout << "max_r" << max_r << endl;
}
for(int i=0; i<num; i++){
// cout << lens[i] << endl;
if(lens[i] == max_r){
cout << s.substr(i,n) << endl;
return 0;
}
}
return 0;
}
// 64 位输出请用 printf("%lld")
本题思路比较简单,但是需要注意设计到小数的部分一定要用浮点数而不是整数。
查看19道真题和解析