算法:简单递归
题解:
偶然间翻到这题,其实这题和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); }
时间: 2024-10-15 10:06:53