题解 | #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")
本题思路比较简单,但是需要注意设计到小数的部分一定要用浮点数而不是整数。