求助第二点错了只有90分
查看原帖
求助第二点错了只有90分
560464
littlebear408楼主2022/1/17 15:30
#include<bits/stdc++.h>
using namespace std;
char f[2049];
char a[2049];
int n;int shu;
void gao(int zuo,int you,int hao)
{
	if(zuo>you||hao>shu-1) return;
	int yi=0,ling=0;
	for(int i=zuo;i<=you;i++)
	{
		if(a[i]=='1') yi++;
		else ling++;
	}
	if(yi==0) f[hao]='B';
	else if(ling==0) f[hao]='I';
	else f[hao]='F';
	gao(zuo,(zuo+you)/2,2*hao);
	gao((zuo+you)/2+1,you,2*hao+1);
}
void out(int a)
{
	if(f[2*a]!=0) out(2*a);
	if(f[2*a+1]!=0) out(2*a+1);
	cout<<f[a];
}
int main()
{
	cin>>n;
	shu=pow(2,n+1);
	memset(f,0,sizeof(f));
	for(int i=1;i<=shu/2;i++) cin>>a[i];
	int l=1,r=shu/2;
	gao(l,r,1);
	out(1);
}

大佬帮我看看

2022/1/17 15:30
加载中...