在vs上和样例输出一样,但为什么除了第三个都WA了(哭)
查看原帖
在vs上和样例输出一样,但为什么除了第三个都WA了(哭)
1656229
qiyuhan楼主2025/1/31 21:57
#include<bits/stdc++.h>
using namespace std;
char c, trees[30000] = { 0};
string str;

char f(int i,int leftbound,int rightbound) {
	if(leftbound!=rightbound)
	{
		char l = f(2 * i, leftbound, (leftbound + rightbound - 1) / 2);
		char r = f(2 * i + 1, (leftbound + rightbound + 1) / 2, rightbound);
		if (l == 'B' && r == 'B')
			return trees[i] = 'B';
		else if (l == 'I' && r == 'I')
			return trees[i] = 'I';
		else return trees[i] = 'F';
	}
	else
	{
		if (str[leftbound] == '1')return trees[i] = 'I';
		else return trees[i] = 'B';
	}
}

int houxu(int i) {
	if (trees[i] == 0)return 0;
	else {
		houxu(2 * i);
		houxu(2 * i + 1);
		putchar(trees[i]);
		return 0;
	}
}

int main(){
	int n, rightbound = 1; scanf_s("%d", &n); c = getchar(); getline(cin, str);
	for (int i = 1; i <= n; i++)rightbound *= 2;
	rightbound -= 1;
	f(1, 0, rightbound);
	houxu(1);
	return 0;
}
2025/1/31 21:57
加载中...