#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; }
是一道以前见过的题目。