洛谷P1087 FBI树【树】

时间:2021-01-01 18:58:30

链接

https://www.luogu.org/problemnew/show/P1087

思路

利用树的思想去模拟

代码

#include<cstdio>
#define mid ((l+r)>>1)
using namespace std;
char a[1025];int n;
void dfs(int l,int r)
{
    if(r>l)
    {
        dfs(l,mid);
        dfs(mid+1,r);//两边
    }
    bool B=1,I=1;
    for(int i=0;i<=r-l;i++)
     {if(a[l+i]==48) B=0;if(a[l+i]==49) I=0;}//如果有0,没有B,如果有1,没有I
    if(B) putchar('I');else if(I) putchar('B');else putchar('F');//输出
}
int main()
{
    scanf("%d\n",&n);
    gets(a);
    dfs(0,(1<<n)-1);//搜
}