|
#include<bits/stdc++.h>
using namespace std;
//这道题像模拟题!
bool x[2000];
int y[5000],c,g,f,m,n,k,cn,bn,dn,mm;
char z,z1[20];
int aa(int l){
if(mm==g) return 0;
if(y[l*2]==0){
if(y[l]==1) cout<<"B";
if(y[l]==2) cout<<"I";
if(y[l]==3) cout<<"F";
mm++;
y[l]=0;
if(l%2==0) aa(l+1);
else aa(l/2);
}
else aa(l*2);
}
int main()
{
cin>>m;
n=1;
k=1;
for(int a=1;a<=m;a++){
n=n*2;
k=k+n;
}
g=k;
f=n;
for(int a=1;a<=n;a++){
cin>>z;
if(z=='0') x[a]=0;
else if(z=='1') x[a]=1;
}
for(int a=1;a<=n;a++){
if(x[a]==1) cn=1;
else bn=1;
}
if(cn==1&&bn==1) y[1]=3;
else{
if(cn==1){
for(int a=1;a<=k;a++) cout<<"I";
return 0;
}
if(bn==1){
for(int a=1;a<=k;a++) cout<<"B";
return 0;
}
}
cn=0;
bn=0;
dn++;
for(int a=1;a<=m;a++){
n=n/2;
k=f/n;
for(int b=1;b<=k;b++){
for(c=(b-1)*n+1;c<=n*b;c++){
if(x[c]==1) cn=1;
else bn=1;
}
dn++;
if(cn==1&&bn==1) y[dn]=3;
else{
if(bn==1) y[dn]=1;
if(cn==1) y[dn]=2;
}
cn=0;
bn=0;
}
}
n=f/2;
aa(n);
return 0;
}
为什么这么长??
|
|