求助10分,样例只能输出一个B!!!
查看原帖
求助10分,样例只能输出一个B!!!
1059565
liuyinuo666楼主2024/10/7 17:25

蒟蒻改了很久没过

#include<bits/stdc++.h>
using namespace std;
int n,lt[114514],rt[114514],id;
string s;
struct node
{
	int id,x;
}c[114514];
int build(string s)
{
	id++;
	c[id].id=id;
	if(s.size()==1)
	{
		if(s=="0")
		{
			c[id].x=0;
		}
		else c[id].x=1;
		return id;
	}
	int l=build(s.substr(0,s.size()/2));
	int r=build(s.substr(s.size()/2,s.size()/2));
	lt[id]=l;
	rt[id]=r;
	if(c[l].x==c[r].x) c[id]=c[l];
	else c[id].x=2;
	return id;
}
void print(int x)
{	
	if(x == -1)	return;
	print(lt[x]);
	print(rt[x]);
	if(c[x].x==0) cout<<'B';
	if(c[x].x==1) cout<<'I';
	if(c[x].x==2) cout<<'F';
	return;
	
	 
}
int main()
{
	memset(lt,-1,sizeof(lt));
	memset(rt,-1,sizeof(rt));
	cin>>n>>s;
	build(s);
	print(1);
}
2024/10/7 17:25
加载中...