#include<stdio.h>
int a[1025];
int pandin(int i,int j)
{
    int t,t1,t2;
    if(i==j)
    {
        switch(a[i])
        {
        case 1:printf("I");return 1;
        case 0:printf("B");return 0;
        }
    }
    t=pandin(i,(i+j-1)/2)+pandin((i+j+1)/2,j);
    if(t==0){printf("B");return 0;}
    if(t==1||t>=3){printf("F");return 3;}
    if(t==2){printf("I");return 1;}
}
int main()
{    
    char t1;
    int n,i,j,k,m,t=1;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
        t*=2;
    for(i=1;i<=t;i++)
    {
        scanf("%c",&t1);
        if(t1=='1')
            a[i]=1;
        else 
        {
            if(t1=='0')
                a[i]=0;
            else i--;}    
    }
    pandin(1,t);
    return 0;
}


是一道以前见过的题目。

http://www.rqnoj.cn/Problem_21.html

posted on 2013-02-08 20:53  海暗  阅读(167)  评论(0编辑  收藏  举报