第五个点WA,求大佬查错。
查看原帖
第五个点WA,求大佬查错。
297451
turbine楼主2020/10/14 21:08
#include <bits/stdc++.h>
using namespace std;
const int MAXN=2*(1<<10)+5;
char tree[MAXN];
int n;
string s;
void Count(int l,int r)//统计树
{
	for(int i=l;i<=r;i+=2){
		if(tree[i]=='F'||tree[i+1]=='F')
			tree[i/2]='F';
		else{
			if(tree[i]=='B'&&tree[i+1]=='B')
				tree[i/2]='B';
			else if(tree[i]=='I'&&tree[i+1]=='I')
				tree[i/2]='I';
			else if((tree[i]=='I'&&tree[i+1]=='B')||(tree[i]=='B'&&tree[i+1]=='I'))
				tree[i/2]='F';
		}
	}
	if(l==1)
		return ;
	Count(l/2,r/2+1);
}
void print(int k)//输出树 
{
	if(k>=2*n)
		return ;
	print(k*2);
	print(k*2+1);
	cout<<tree[k];
}
int main()
{
	cin>>n;
	n=1<<n;
	cin>>s;
	int len=s.size();
	for(int i=n;i<=2*n-1;i++){//初始化叶节点 
		if(s[i-n]=='0')
			tree[i]='B';
		else tree[i]='I';
	}
	Count(n,2*n-1);
	print(1);
	return 0;
}
2020/10/14 21:08
加载中...