首页 > 代码库 > 【Luogu2562】基因编码

【Luogu2562】基因编码

点此进入原题

算法简单递归

题解

偶然间翻到这题,其实这题和FBI树很像(这题更简单一点)

一道很好的入门递归练习题,推荐大家来玩玩~

代码:

#include <cstdio>
#include <cstring> 
const int N = 1<<10+5; //这题没给数据范围啊貌似,就直接用了FBI树的数据范围,貌似可以过QWQ
char s[N];
void dfs(int b, int e) {
    bool flag = true;
    char c = s[b];
    for(int i = b+1; flag && i <= e; i++) //判断是否为全0或全1
        if(s[i] != s[i-1]) flag = false;
    if(flag) { //如果是全0或全1,按题意输出A或B
        if(s[b] == 0) putchar(A);
        else putchar(B);
    }
    else { //否则输出C
        putchar(C);
        dfs(b, (b+e)/2); //分成等长子串继续递归
        dfs((b+e)/2+1, e); //同上
    }
}
int main() {
    scanf("%s", s+1);
    int n = strlen(s+1);
    dfs(1, n);
}

 

【Luogu2562】基因编码