求助,哪错了
查看原帖
求助,哪错了
238203
跟你沟通楼主2020/10/24 13:28
#include<bits/stdc++.h>
using namespace std;
int k, n;
char tree[2000];
string s;
void make(int i)
{
	for (; i > 0; --i)
	{
		if (tree[i * 2] == 'I' && tree[i * 2 + 1] == 'I') tree[i] = 'I';
		else if (tree[i * 2] == 'B' && s[i * 2 + 1] == 'B') tree[i] = 'B';
		else tree[i] = 'F';
	}
}
char judge(int x)
{
	if (s[x] == '0') return 'B';
	return 'I';
}
void print(int i)
{
	if (i > n) return;
	print(i * 2);
	print(i * 2 + 1);
	cout << tree[i];
}
int main()
{
	cin >> k;
	getchar();
	cin >> s;
	n = (int)pow(2, k + 1) - 1;
	int len = (int)pow(2, k);
	for (int i = 1; i <= n; i += 2)
	{
		tree[(k + i / 2 + 1) * 2] = judge(i - 1);
		tree[(k + i / 2 + 1) * 2 + 1] = judge(i);
	}
	make(n / 2);
	print(1);
}
2020/10/24 13:28
加载中...