贪心——国际象棋锦标赛
题目意思:
国际象棋锦标赛即将举行,其中nn国际象棋选手将参加。每个参与者将与所有其他参与者进行一场比赛。每场比赛的结束要么是一个玩家的胜利,另一个玩家的失败,要么是两个玩家的平局。
每个玩家对比赛都有自己的期望,他们可以是以下两种类型之一:
- 玩家不想输掉任何比赛(即以零损失结束锦标赛));
- 玩家想要赢得至少一场比赛。
您必须确定所有比赛是否存在结果,以便所有玩家都满足他们的期望。如果有几种可能的结果,请打印其中任何一种。如果没有,请报告这是不可能的。
输入格式
第一行包含单个整数t(1<t<200)表示测试用例的数量。
每个测试用例的第一行包含一个整数n(2 <=n<=50) 表示国际象棋选手的数量。
第二行包含字符串s (长度为n,只包含‘1’和‘2’两个字符),然后‘1’玩家对第一种类型的期望,否则对第二种类型的期望。
输出格式
对于每个测试用例,请按以下格式打印答案:
在第一行中,如果不可能满足所有玩家的期望,请打印NO。
否则,请打印YES和大小n*n的矩阵。
矩阵元素分别为+,-,=,X:
- +,该选手胜利;
- -,该选手失败;
- =,游戏平局;
- X,代表自己所在位置(i=j).
样例输入
3 3 111 2 21 4 2122
样例输出
YES X== =X= ==X NO YES X--+ +X++ +-X- --+X
分析
根据题意可知,1代表不输,2代表至少赢一局,那么这样的话,2种类的选手不可能赢1,1和1之间平局或者胜利对于整体无影响,所以我们就可以假设,1和任何人都是平局(1种类不会输)。
所以就剩下2种类需要考虑,2不能赢1,所以2只有赢2,那么至少需要三个2类型以上才能够达到最少获胜标准,当2的数量大于三个时,,那么我们规定,每个2类型的选手都能将其前面的打败,并且输给后面的,这样之后,只需要再将首尾的两个2类型需要拿出来判断即可。
#include<bits/stdc++.h>
#include<string.h>
using namespace std;
int main()
{int n, t, i, j;cin>>t;char num[56];for(i=0;i<t;i++){cin>>n;getchar();gets(num);int a, k;a=0;for(j=0;j<n;j++){if(num[j]=='2')a++;}if(a==1||a==2)cout<<"NO"<<endl;else {int p, q;cout<<"YES"<<endl; for(j=0;j<n;j++){if(num[j]=='2'){p=j;break;}}for(j=n-1;j>=0;j--){if(num[j]=='2'){q=j;break;}}for(j=0;j<n;j++){if(num[j]=='1'){for(k=0;k<n;k++){if(k==j)cout<<"X";else cout<<"=";}cout<<endl;}else if(j==p){for(k=0;k<n;k++){if(k==j)cout<<"X";else if(num[k]=='1')cout<<"=";else if(k==q)cout<<'-';else cout<<"+"; }cout<<endl; }else if(j==q){for(k=0;k<n;k++){if(k==j)cout<<"X";else if(num[k]=='1')cout<<"=";else if(k==p)cout<<'+';else cout<<"-"; }cout<<endl; }else{for(k=0;k<n;k++){if(k==j)cout<<"X";else if(num[k]=='1')cout<<"=";else if(k>j)cout<<'+';else cout<<"-"; }cout<<endl; } } }}return 0;
}
贪心——国际象棋锦标赛相关推荐
- 世界上第一台计算机国际象棋大师是如何诞生的?
作者 | Allison Marsh 译者 | ScottJiang,责编 | 沭七 出品 | CSDN(ID:CSDNnews) 国际象棋是一个复杂的游戏.这是两个对手之间的策略性游戏,但是没有任何 ...
- android 象棋开源_7种面向国际象棋玩家的开源Android应用
android 象棋开源 象棋游戏已经挑战和娱乐了多个世纪的玩家. 从中世纪的皇室法院到现代的课后国际象棋程序,该游戏具有广泛的吸引力,并且经受了时间的考验. 国际象棋容易学习,但很难掌握. 每个玩家 ...
- AlphaZero登上《科学》封面:一个算法“通杀”三大棋,完整论文首次发布
https://blog.csdn.net/cf2SudS8x8F0v/article/details/84901301 来源:量子位 作者:乾明 一璞 栗子 晓查 不仅会下围棋,还自学成才横扫国际象 ...
- AlphaZero进化论:从零开始,制霸所有棋类游戏
2017年末,DeepMind推出了AlphaZero--一套能够从零开始自主学习国际象棋.将棋(类似于日本版的国际象棋)以及围棋的技艺,从而全面超越各项目世界冠军的系统. 对于这一系统带来的初步成果 ...
- 再现神人!仅仅只花4天半就解开了史上最难密码,这下整个圈子都炸开了.........
全世界只有3.14 % 的人关注了 爆炸吧知识 鲁迅先生曾说,记录这东西,就是用来打破的. 前阵子程序员圈子一定热呼的不可开交,咋回事?还不是因为有个程序员妹子捅出了一个大篓子. 事情是这样的,在德国 ...
- 26岁的她,成为深圳大学史上最年轻正教授!
26岁的中国国际象棋队队员.四届世界棋后侯逸凡10日正式受聘成为深圳大学师范学院(教育学部)体育学院教授,她也成为深圳大学历史上最年轻的正教授. 深圳大学师范学院党委书记姚正武在当日的聘任仪式上对侯逸 ...
- 他实现了AlphaGo Zero的算法,发现可能还得训练1700年 | 代码
夏乙 发自 凹非寺 量子位 出品 | 公众号 QbitAI AlphaGo退隐,留下身后一众你追我赶的围棋AI. 比如说前些天在野狐上连斩多名职业选手的新版绝艺"符合预期",又比如 ...
- Chess.com:象棋社区网站每月访问量达 2.8 亿,年收入在 5000 万至 1 亿之间
Chess.com是世界领先的国际象棋社区.它始于 2007 年,目前年收入超过 5000 万美元. 核心功能 Live Chess 花了 5 个多月才发布.到那时,该网站已经拥有近100,000名会 ...
- 【历史上的今天】12 月 25 日:第一个网络服务器诞生;黑客社区的创始人出生;牛顿诞生
整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2021 年 12 月 25 日,在 2002 年的今天,中国造血干细胞捐献者资料库网络系统正式建立运行.目前,该 ...
- 十位改变世界的人工智能领域大师
1948年,"计算机科学之父"的Allen Turing以及"信息科学之父"的Claude Shannon自主研发了今天国际象棋程序仍然使用的基本算法.诺贝 ...
最新文章
- 不得不提的团队协作工具
- LDAP 中 CN, OU, DC 的含义(ldap学习一)
- 四种常见的激活函数画图及简单改造
- 大规模神经网络最新文献综述:训练高效DNN、节省内存使用、优化器设计
- android 隐藏手机底部虚拟按键
- [SCOI2012]滑雪 (最小生成树 Kruskal)
- stl标准模板库_C ++标准模板库(STL)中的array :: fill()
- 5886. 如果相邻两个颜色均相同则删除当前颜色
- windows server 2008R2 部署WSUS 服务
- 除夕年味年夜饭海报PSD素材,盛了一年的思念
- html里定义函数调用函数调用,函数调用的三种方式是什么?
- ICPC程序设计题解书籍系列之六:吴永辉:《算法设计编程实验》
- 一周最新示例代码回顾 (4/23–4/29)
- web 页面间传值 js 封装方法
- 流程图伪代码计算机语言,论文中伪代码怎么写
- 实现元素水平垂直居中的4种方法
- 2021年中国移动互联网行业发展现状及行业发展趋势分析[图]
- 深度学习:view size is not compatible with input tensor‘s size and stride (at least one dimension spans a
- 【ChatGPT军事专家】岸防炮的射速是多少,如何攻破岸防炮
- Nature:Deep Learning 深度学习综述
热门文章
- 计算机基础中的word2010,计算机基础word2010上机操作 - 图文
- 伴随矩阵和逆矩阵的关系证明
- 22种免费网络推广方式有哪些?
- [51nod1457]小K vs. 竹子
- 数学分析 函数项级数(第13章)
- 美通社企业新闻汇总 | 2019.1.16 | 微软与药店巨头沃博联达成战略合作,科勒中国第13家工厂落成...
- 第七章 DirectX 数学向量,碰撞检测和粒子系统(上)
- Mac怎么方便看节假日安排,添加中国法定节假日安排
- Win7下安装Ubuntu(双硬盘)的简要步骤
- 前端新技术(离线缓存、CDN内容分发网络)