#include<bits/stdc++.h>
using namespace std;
int k,n=1;
char a[20005],ans[20005],x[20005];
char dfs(int len,int p,int s)
{
if(len==1)
{
if(a[s]=='1')
ans[p*2]='I';
else ans[p*2]='B';
if(a[s+1]=='1')
ans[p*2+1]='I';
else ans[p*2+1]='B';
if(ans[p*2]==ans[p*2+1])return ans[p*2];
return 'F';
}
ans[p*2]=dfs(len/2,p*2,s-len/2);
ans[p*2+1]=dfs(len/2,p*2+1,s+len/2);
if(ans[p*2]=='F'||ans[p*2+1]=='F')return 'F';
if(ans[p*2]!=ans[p*2+1])return 'F';
return ans[p*2];
}
void f(int p)
{
if(p>2*n)return ;
x[++k]=ans[p*2+1];
f(p*2+1);
x[++k]=ans[p*2];
f(p*2);
}
int main()
{
scanf("%d",&k);
for(int i=1;i<=k;i++)
n*=2;
for(int i=1;i<=n;i++)
cin>>a[i];
ans[1]=dfs(n/2,1,n/2);
k=0;
x[++k]=ans[1];
f(1);
for(int i=k;i>=1;i--)
cout<<x[i];
return 0;
}
我的输出:IBFBBBFIBFIIIFF
数据点1的输出:IBFBBBFIBFIIIFF
有什么不同吗???