题目链接:点击打开链接

L3-015. 球队“食物链”

时间限制
1000 ms

内存限制
262144 kB

代码长度限制
8000 B

判题程序
Standard

作者
李文新(北京大学)

某国的足球联赛中有N支参赛球队,编号从1至N。联赛采用主客场双循环赛制,参赛球队两两之间在双方主场各赛一场。

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

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

注:排列{ a1 a2 ...aN }在字典序上小于排列{ b1 b2 ... bN },当且仅当存在整数K(1 <= K <= N),满足:aK < bK且对于任意小于K的正整数i,ai=bi

输入格式:

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

输出格式:

按题目要求找到“食物链”T1 T2 ... TN,将这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

提交代码

//注意:i战胜j可以是st[i][j]='W'||st[j][i]='L';
#include<stdio.h>
#include<string.h>
int n;
char st[25][25];
int a[25];
int ans;
int l;
int visit[25];
int u;
void dfs(int v)
{int i,j;if(ans==1)return ;if(l==n){if(st[v][u]=='W'||st[u][v]=='L'){for(j=0;j<n-1;j++)printf("%d ",a[j]+1);printf("%d\n",a[n-1]+1);ans=1;return ;}}for(i=0;i<n;i++){if(ans==1)return ;int tag=0;//优化,因为是一个环,若该点没有战胜0,则就没有必要对该点判断下去 for(j=1;j<n;j++){if(!visit[j]&&st[j][0]=='W'||st[0][j]=='L'){tag=1;break;}}if(tag==0)return ;if(!visit[i]&&(st[v][i]=='W'||st[i][v]=='L')){visit[i]=1;a[l]=i;l++;dfs(i);visit[i]=0;l--;}    }
}
int main()
{int i,j;scanf("%d",&n);for(i=0;i<n;i++)scanf("%s",st[i]);int tag=0;//优化,因为是一个环,所以若存在一个食物链,就直接判断从0开始是否可以即可 for(i=1;i<n;i++){if(st[i][0]=='W'||st[0][i]=='L'){tag=1;break;}}if(tag==0){printf("No Solution\n");return 0;}memset(visit,0,sizeof(visit));ans=0;l=0;u=0;a[l]=0;l++;visit[0]=1;dfs(0);if(ans==0)printf("No Solution\n");return 0;
}

7-15 球队“食物链”(30 分)相关推荐

  1. 【CCCC】L3-015 球队“食物链” (30分),搜索排列

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

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

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

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

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

  4. L3-2 球队“食物链”(30 分)

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

  5. PAT甲级1053 Path of Equal Weight (30分) :[C++题解]dfs求树的路径长度、邻接表

    文章目录 题目分析 题目链接 题目分析 输入样例: 20 9 24 10 2 4 3 5 10 2 18 9 7 2 2 1 3 12 1 8 6 2 2 00 4 01 02 03 04 02 1 ...

  6. CCF201409-5 拼图(30分)

    试题编号: 201409-5 试题名称: 拼图 时间限制: 3.0s 内存限制: 256.0MB 问题描述: 问题描述 给出一个n×m的方格图,现在要用如下L型的积木拼到这个图中,使得方格图正好被拼满 ...

  7. 7-5 公路村村通 (30 分)(C语言实现)

    现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本. 输入格式: 输入数据包括城镇数目正整数N(≤1000)和候选道路数目M(≤3N) ...

  8. 7-4 银行排队问题之单队列多窗口加VIP服务 (30 分)

    7-4 银行排队问题之单队列多窗口加VIP服务 (30 分) 说实话这道题挺恶心 有意思的,大模拟,主要的思路就是模拟时间轴. 题目描述 假设银行有K个窗口提供服务,窗口前设一条黄线,所有顾客按到达时 ...

  9. 上海新中考体育考试方案公布:总分30分不变

    在近几年来的全国体质健康监测中,申城中小学生及格率稳定在95%左右,优良率始终保持在40%以上,并逐年提升.然而,与此同时,和全国其他省市相比,耐力和力量项目是上海学生的两大短板.新方案增加了可选项目 ...

最新文章

  1. C语言的一个关键字——static
  2. cp: omitting directory”错误
  3. 全球及中国高压和超高压波纹铝护套交联聚乙烯电缆行业产销现状与投资策略建议报告2021-2027年版
  4. js中浮点型运算 加减乘除
  5. 计算机系统基础:虚拟存储管理知识笔记
  6. kdj值应用口诀_KDJ买卖绝学!背熟它短线选股不用愁
  7. Java架构-CAS SSO单点登录框架介绍
  8. powershell 更改为Oh-my-zsh
  9. 新手学习selenium路线图(老司机亲手绘制)-学前篇
  10. STORM的DRPC通讯
  11. 计算机中用于表示储存,计算机中用来表示存储器容量的基本单位是
  12. 手把手教你配置阿里云服务器搭建网站
  13. Win10系统安装SQL2008 R2详细步骤+图片+常见问题及解决方法
  14. 一文说明前端和后端的区别、职业发展以及就业前景!
  15. MATLB|基于粒子群算法的能源管理系统EMS(考虑光伏、储能 、柴油机系统)
  16. 华为鸿蒙开发者公测报名,华为发布鸿蒙2.0手机开发者测试版!华为老手机可申请公测...
  17. 【NLP】关键词共现/属性共现矩阵
  18. 声乐导师:荣永嘉(青年男高音,清畅声乐创始人)
  19. [Firemonkey]开发Android系统的PDA手机扫码功能
  20. 富斯i6航模遥控器通过usb-ttl串口工具刷改中文系统

热门文章

  1. Okumura-Hata模型 传输损耗计算 传输距离对传输损耗的影响
  2. 项目管理者如何应对需求的不断变化
  3. 抖音短视频都是怎么制作的,一起来看看吧
  4. Description Type Target runtime Apache Tomcat v8.5 is not defined.
  5. 铁乐学python_day03-作业
  6. web magic 爬取京东 一个爬虫实现
  7. 中国移动联通电信网通和原中国邮电的关系
  8. Spring Boot+Vue开源项目
  9. ERP、CRM、CMS
  10. WorldFirst官网无法访问?万里汇WorldFirst官网域名变更!