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;
}

  

posted @ 2011-08-07 23:46  zqynux  阅读(1471)  评论(0编辑  收藏  举报