RQNOJ 21 FBI树 解题报告
DFS模拟,然后srch(i, j)表示输出用i, j组成的树的后序遍历,返回0就是都是0,1就是都是1,2就是0,1都有。。
#include <stdio.h> #include <string.h> #include <stdlib.h> char str[1025]; char put[3] = {'B', 'I' ,'F'}; int srch(int start, int end) { int i, j; if(start == end){ printf("%c", put[str[start] - '0']); return str[start] - '0'; } i = srch(start, (start + end) / 2); j = srch((start + end) / 2 + 1, end); if(i == j){ printf("%c", put[i]); return i; }else{ printf("%c", 'F'); return 2; } } int main(int argc, char **argv) { int n; scanf("%d\n", &n); scanf("%s", str); srch(0, strlen(str) - 1); printf("\n"); return 0; }