tijie
2023-09-18 22:11:06
发布于:广东
2阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
int n;
string s;
char check(int l,int r){
int f0=0,f1=0;
for(int i=l;i<=r;i++){
if(s[i]=='0') f0=1;
else f1=1;
if(f0&f1) return 'F';
}
if(f0&&!f1) return 'B';
else return 'I';
}
char tree[100001];
void build(int l,int r,int fa){
char c=check(l,r);
tree[fa]=c;
if(l<r){
int m=(l+r)/2;
build(l,m,2*fa);
build(m+1,r,2*fa+1);
}
}
void print(int fa){
if(tree[fa]!='\0'){
print(2*fa);
print(2*fa+1);
cout<<tree[fa];
}
}
int main(){
cin>>n>>s;
build(0,(1<<n)-1,1);
print(1);
return 0;
}
这里空空如也
有帮助,赞一个