L2-047 锦标赛

#include <bits/stdc++.h>
using namespace std;
const int N = 1 << 20;//对应2的20次方 
struct node {
	int win;
	int lose;//二叉树左右名字随便取只要相应能分辨即可
}tree[N];//运用静态数组模拟树,本静态数组用在本题上妙极了 
bool dfs(int n,int ssize) {
	//能递归遍历到最后一个即对应没问题不然就回溯交换继续寻找 
	if (n > ssize) return true;//递归结束条件,其相应要求前面的递归均true而其中但凡有一个false其就得byebye!!! 
	if (tree[n].win < tree[n].lose) {
		return false;
	}//所有节点都要满足该条件 
	//注意其二叉树节点索引规律 
	tree[2 * n].win = tree[n].win;//做出假设
	tree[2 * n + 1].win = tree[n].lose;
	if (dfs(2 * n, ssize) && dfs(2 * n + 1, ssize)) {
		return true;
	}
	swap(tree[2 * n].win, tree[2 * n + 1].win);
	if (dfs(2 * n, ssize) && dfs(2 * n + 1, ssize)) {
		return true;
	}
	return false;//上面节点可以但往下递归不行了!!! 
}
int main() {
	int k;//层数
	cin >> k;
	for (int i = k; i >= 1; i--) {
		for (int j = 1 << (i - 1); j < 1 << i; j++) {//移位对应也可以用库函数实现 
			cin >> tree[j].lose;
		}
	}//妙妙的赋值很有意思 
	//输入最后一轮的赢者
	cin >> tree[1].win;//所选数据结构完美契合本题 
	int ssize = (1 << k) - 1;//数组节点个数 
	int flag = 0;
	if (dfs(1,ssize)) {//开始递归 
		for (int j = 1 << (k - 1); j < 1 << k; j++) {
			if (flag == 0) {//输出格式控制细节 
				cout << tree[j].win << " " << tree[j].lose;
				flag = 1;
			}
			else {
				cout << " " << tree[j].win << " " << tree[j].lose;
			}
		}
	}
	else {
		cout << "No Solution" << '\n';
	}
	return 0;
}

相关推荐

  1. L2-047 锦标赛

    2024-04-12 10:48:02       42 阅读
  2. L2-048 寻宝图 (DFS做法)

    2024-04-12 10:48:02       49 阅读
  3. 团体程序设计天梯赛 L2-027 名人堂与代金券

    2024-04-12 10:48:02       45 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-12 10:48:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-12 10:48:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-12 10:48:02       82 阅读
  4. Python语言-面向对象

    2024-04-12 10:48:02       91 阅读

热门阅读

  1. node与npm常用命令

    2024-04-12 10:48:02       195 阅读
  2. 速盾:为什么会出现高防cdn?它适合哪些行业?

    2024-04-12 10:48:02       94 阅读
  3. symfony框架介绍

    2024-04-12 10:48:02       37 阅读
  4. C#泛型的逆变协变

    2024-04-12 10:48:02       150 阅读
  5. C语言—每日选择题—Day70(需要看)

    2024-04-12 10:48:02       36 阅读