60分WA求助
查看原帖
60分WA求助
760763
Wuzke_楼主2024/8/15 23:12
#include<bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
int N;
char s[114514];
string line,post;
void postorder(char s,int index){
	if(s=='F' || s=='B' || s=='I'){
		postorder(line[index*2],index*2);
		postorder(line[index*2+1],index*2+1);
		cout<<s;
	}
}
signed main(){
	ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
	cin>>N;
	int n=(int)pow(2,N);
	for(int i=1;i<=n;i++) cin>>s[i];
	if(N==0){
		if(s[1]=='0') cout<<'B';
		else cout<<'I';
		return 0;
	}
	for(int i=n;i<n*2;i++){
		if(s[i-n+1]=='0') line[i]='B';
		else if(s[i-n+1]=='1') line[i]='I';
		else line[i]='F';
	}
	for(int i=n-1;i>=1;i--){
		if(line[i*2]=='B'){
			if(line[i*2+1]=='B') line[i]='B';
			else if(line[i*2+1]=='I') line[i]='F';
			else line[i]='F';
		}else if(line[i*2]=='I'){
			if(line[i*2+1]=='B') line[i]='F';
			else if(line[i*2+1]=='I') line[i]='I';
			else line[i]='F';
		}else{
			line[i]='F';
		}
	}
	postorder(line[1],1);
	cout<<endl;
	return 0;
}

各位dalao帮忙看一下

代码写得不太好,见谅

2024/8/15 23:12
加载中...