社区讨论
本地运行正确洛谷显示read (ASCII 0)
P1087[NOIP 2004 普及组] FBI 树参与者 1已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @lo1v6izx
- 此快照首次捕获于
- 2023/10/23 03:31 2 年前
- 此快照最后确认于
- 2023/11/03 04:01 2 年前
CPP
#include <iostream>
#include <cmath>
int n;
char btree[1500], tmp;
int len, arrlen;
void dfs(int i) //递归输出
{
if (i > arrlen) {
return ;
}
dfs(2 * i);
dfs(2 * i + 1);
std::cout << btree[i];
}
int main(void)
{
std::cin >> n;
arrlen = std::pow(2, n + 1);
len = std::pow(2, n);
for (int i = len; i < 2 * len; i++) { //建立叶子结点
std::cin >> tmp;
if (tmp == '0') {
btree[i] = 'B';
} else if (tmp == '1') {
btree[i] = 'I';
}
}
for (int i = n - 1; i >= 0; i--) { //建立其他结点
len = std::pow(2, i);
for (int j = len; j < 2 * len; j++) {
if (btree[2 * j] == 'I' && btree[2 * j + 1] == 'I') {
btree[j] = 'I';
} else if (btree[2 * j] == 'B' && btree[2 * j + 1] == 'B') {
btree[j] = 'B';
} else {
btree[j] = 'F';
}
}
}
dfs(1);
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...