题解 | DNA序列

#include <algorithm>
#include <cmath>
#include <iostream>
#include <iterator>
#include <map>
#include <string>
#include <vector>
using namespace std;

int main() {
    string seq;
    int sub_str_len;

    cin >> seq >> sub_str_len;

    int seq_len = seq.size();
    vector<double> ratios;
    vector<string> sub_strs;
    for (int i = 0; i <= (seq_len - sub_str_len); i ++) {
        // 1. 依次取出子串
        string temp = seq.substr(i, sub_str_len);
        // 2. 在子串中算出 GC 比例
        int counter = 0;
        for (char ch : temp) {
            if (ch == 'C' || ch == 'G') {
                counter ++;
            }
        }
        double ratio = double(counter) / double(sub_str_len);
        // 3. 将比例、子串对 存入vector中
        ratios.push_back(ratio);
        sub_strs.push_back(temp);
    }

    // 4. 找的比例的最大值
    auto max_pos = max_element(ratios.begin(), ratios.end());
    double max_ratio = *max_pos; 

    // 5.遍历ratios 找到最大值第一次出现的下标
    double eps = pow(10, -4);
    int index = 0;
    for (int i = 0; i < ratios.size(); i ++) {
        if (abs(ratios[i] - max_ratio) <= eps) {
            index = i;
            break;
        }
    }

    // 6. 输出sub_strs在index的内容
    cout << sub_strs[index] << endl;

    return 0;
}
// 64 位输出请用 printf("%lld")

全部评论
GC比例计算很关键
1 回复 分享
发布于 2025-01-02 13:20 陕西

相关推荐

01-30 22:03
门头沟学院 Java
用微笑面对困难:我滴妈,【俩月】【实习】【主管】仨debuff吃满了,独立设计开发的项目写了绝大占比的运营板块,你独立开发,那维护、问题复盘、日志更新、bug、策划书全是自己整的? 不建议写那么大,可以从小出发更容易
点赞 评论 收藏
分享
牛客98820962...:个人意见,我觉得实习和项目经历要一致,达美乐感觉没必要写
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务