专栏文章

题解:UVA11961 DNA

UVA11961题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mioqkflz
此快照首次捕获于
2025/12/02 23:31
3 个月前
此快照最后确认于
2025/12/02 23:31
3 个月前
查看原文
CPP
#include <iostream>
#include <set>
using namespace std;
int main() {
    int T, N, K;
    cin >> T;
    while (T--) {
        cin >> N >> K;
        string dna;
        cin >> dna;
        set<string> mutations;
        
        // 使用lambda表达式替代原generate函数
        auto generate = [&](auto&& self, string cur, int pos, int changes) -> void {
            if (pos == dna.size()) {
                if (changes <= K) mutations.insert(cur);
                return;
            }
            for (char c : {'A','C','G','T'}) {
                self(self, cur + c, pos + 1, changes + (c != dna[pos]));
            }
        };
        
        generate(generate, "", 0, 0);
        cout << mutations.size() << '\n';
        for (auto& s : mutations) cout << s << '\n';
    }
    return 0;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...