链接
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);//搜
}