problem

L3-015 球队“食物链” (30分)
某国的足球联赛中有N支参赛球队,编号从1至N。联赛采用主客场双循环赛制,参赛球队两两之间在双方主场各赛一场。

联赛战罢,结果已经尘埃落定。此时,联赛主席突发奇想,希望从中找出一条包含所有球队的“食物链”,来说明联赛的精彩程度。“食物链”为一个1至N的排列{ T
​1
​​ T
​2
​​ ⋯ T
​N
​​ },满足:球队T
​1
​​ 战胜过球队T
​2
​​ ,球队T
​2
​​ 战胜过球队T
​3
​​ ,⋯,球队T
​(N−1)
​​ 战胜过球队T
​N
​​ ,球队T
​N
​​ 战胜过球队T
​1
​​ 。

现在主席请你从联赛结果中找出“食物链”。若存在多条“食物链”,请找出字典序最小的。

注:排列{ a
​1
​​ a
​2
​​ ⋯ a
​N
​​ }在字典序上小于排列{ b
​1
​​ b
​2
​​ ⋯ b
​N
​​ },当且仅当存在整数K(1≤K≤N),满足:a
​K
​​ <b
​K
​​ 且对于任意小于K的正整数i,a
​i
​​ =b
​i
​​ 。

输入格式:
输入第一行给出一个整数N(2≤N≤20),为参赛球队数。随后N行,每行N个字符,给出了N×N的联赛结果表,其中第i行第j列的字符为球队i在主场对阵球队j的比赛结果:W表示球队i战胜球队j,L表示球队i负于球队j,D表示两队打平,-表示无效(当i=j时)。输入中无多余空格。

输出格式:
按题目要求找到“食物链”T
​1
​​ T
​2
​​ ⋯ T
​N
​​ ,将这N个数依次输出在一行上,数字间以1个空格分隔,行的首尾不得有多余空格。若不存在“食物链”,输出“No Solution”。

输入样例1:
5
-LWDW
W-LDW
WW-LW
DWW-W
DDLW-
输出样例1:
1 3 5 4 2
输入样例2:
5
-WDDW
D-DWL
DD-DW
DDW-D
DDDD-
输出样例2:
No Solution

  • n个队伍,两两比赛,获得一张胜负表
  • 求一条链,满足ai战胜ai+1,输出字典序最小

solution

  • 按照比赛结果建有向图,胜的指向负的,求拓扑排序(有环)?
  • 不不不,直接搜索emmm,感觉有点像全排列,以及加上八皇后的剪枝。嗯,搜索某个满足特定条件的排列,只不过判定条件改成了二维数组
#include<bits/stdc++.h>
using namespace std;
const int maxn = 50;int n, T0, ok;
int e[maxn][maxn], vis[maxn];
vector<int>q;
void dfs(int u, int k){for(int i = 1; i <= n; i++){int flag = 0;//剩余队伍不存在战胜第一只队伍for(int j = 1; j <= n; j++){if(!vis[j] && e[j][T0]){flag = 1; break;}}if(flag && !ok && !vis[i] && e[u][i]){vis[i] = 1;  q.push_back(i);if(k==n-1 && e[i][T0]){ok = 1;for(int j = 0; j < q.size(); j++){if(j!=0)cout<<" "; cout<<q[j];}}else{dfs(i,k+1);}vis[i] = 0;  q.pop_back();}}
}int main(){cin>>n;  cin.get();for(int i = 1; i <= n; i++){for(int j = 1; j <= n; j++){char ch;  cin>>ch;if(ch=='W')e[i][j] = 1;if(ch=='L')e[j][i] = 1;}cin.get();}for(int i = 1; i <= n; i++){//另i为队首vis[i] = 1;  q.push_back(i);T0 = i;  dfs(i,1); if(ok)return 0;vis[i] = 0;  q.pop_back();}cout<<"No Solution";return 0;
}

【CCCC】L3-015 球队“食物链” (30分),搜索排列相关推荐

  1. L3-015 球队“食物链” (30分)

    L3-015 球队"食物链" (30分) 某国的足球联赛中有N支参赛球队,编号从1至N.联赛采用主客场双循环赛制,参赛球队两两之间在双方主场各赛一场. 联赛战罢,结果已经尘埃落定. ...

  2. 7-15 球队“食物链” (30 分)

    题目链接 题意:就是找一个环,使环上的每一个点都有赢下一个点的情况. 就是一个dfs+剪枝,剪枝就是每个点都要判断一下能否有一个点能够赢第一个点,但判断的时候要在还剩一个点的时候,这样讲可能有点抽象, ...

  3. 【CCCC】L3-008 喊山 (30分),BFS搜索最长路,水题

    problem L3-008 喊山 (30分) 喊山,是人双手围在嘴边成喇叭状,对着远方高山发出"喂-喂喂-喂喂喂--"的呼唤.呼唤声通过空气的传递,回荡于深谷之间,传送到人们耳中 ...

  4. 【CCCC】L3-014 周游世界 (30分),,DFS搜索最短路,路径打印

    problem L3-014 周游世界 (30分) 周游世界是件浪漫事,但规划旅行路线就不一定了-- 全世界有成千上万条航线.铁路线.大巴线,令人眼花缭乱.所以旅行社会选择部分运输公司组成联盟,每家公 ...

  5. 【CCCC】L3-017 森森快递 (30分),线段树rmq模板+贪心排序

    problem L3-017 森森快递 (30分) 森森开了一家快递公司,叫森森快递.因为公司刚刚开张,所以业务路线很简单,可以认为是一条直线上的N个城市,这些城市从左到右依次从0到(N−1)编号.由 ...

  6. 【CCCC】L3-004 肿瘤诊断 (30分),三维BFS

    problem L3-004 肿瘤诊断 (30分) 在诊断肿瘤疾病时,计算肿瘤体积是很重要的一环.给定病灶扫描切片中标注出的疑似肿瘤区域,请你计算肿瘤的体积. 输入格式: 输入第一行给出4个正整数:M ...

  7. 【CCCC】L3-001 凑零钱 (30分),,01背包路径打印

    problem L3-001 凑零钱 (30分) 韩梅梅喜欢满宇宙到处逛街.现在她逛到了一家火星店里,发现这家店有个特别的规矩:你可以用任何星球的硬币付钱,但是绝不找零,当然也不能欠债.韩梅梅手边有 ...

  8. 【CCCC】L3-019 代码排版 (30分),大模拟

    problem L3-019 代码排版 (30分) 某编程大赛中设计有一个挑战环节,选手可以查看其他选手的代码,发现错误后,提交一组测试数据将对手挑落马下.为了减小被挑战的几率,有些选手会故意将代码写 ...

  9. 【CCCC】L3-022 地铁一日游 (30分),floyd+大模拟

    problem L3-022 地铁一日游 (30分) 森森喜欢坐地铁.这个假期,他终于来到了传说中的地铁之城--魔都,打算好好过一把坐地铁的瘾! 魔都地铁的计价规则是:起步价 2 元,出发站与到达站的 ...

最新文章

  1. 初探设计:Java继承何时用?怎么用?
  2. 【Android 安装包优化】APK 打包流程 ( 文件结构 | 打包流程 | 安装流程 | 安卓虚拟机 )
  3. bread是可数还是不可数_​面包bread是可数名词还是不可数
  4. SpringBoot + Dubbo + Zookeeper搭建一个简单的分布式服务
  5. linux sd启动盘制作工具,制作Mini Linux U盘启动盘
  6. mysql workbench 建表时PK, NN, UQ, BIN, UN, ZF, AI
  7. 计算机网络(24)——轮转访问MAC协议
  8. 蓝牙耳机哪个牌子好?国庆出游蓝牙耳机推荐
  9. CodeSmith介绍
  10. 手机中.android_secure文件夹中的文件能删除吗,安卓手机里的各“文件夹”都是什么?能删吗?-手机相册在哪个文件夹...
  11. php递归算法计算n 介乘,递归算法示例——计算N的阶乘
  12. 运营商宽带网速为什么用bit而不用byte
  13. 高德地图实现展示多个规划的路线
  14. 使用adb 命令时提示“adb”既不是内部或外部命令,也不是可运行的程序
  15. jetson-nano环境查询
  16. php 爬虫 超市,scrapy爬虫 爬取天猫进口零食网页
  17. 33岁适合学java吗_33岁女生想学习Java好不好
  18. C++中函数重载是如何实现
  19. Repeater用法(
  20. 如何利用gretna软件计算脑网络全局属性(聚类系数,小世界属性,最短路径),局部属性指标(度,度分布,节点效率),如何理解网络稀疏度

热门文章

  1. 万有引力(Law of universal gravitation)
  2. Python Flask Web 第三课 —— 模板
  3. C++11::遍历tuple中的元素
  4. 计算机设备序列号都一样,如何使用adb工具
  5. PHP连接pda,OTG接口是什么
  6. opencv 文字识别_Python+opencv+EAST做自然场景文本检测!
  7. python语言入门-Python语言入门详解!快速学成Python!
  8. python自学看什么书-python自学看什么书
  9. python免费课程400节-海口少儿Python编程语言培训机构
  10. python语言程序设计是干什么的-Python语言程序设计