时隔一年再次尝试写了这道题,终于a了,了解了错了十次的痛。

啥都不说了上代码!!!

#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
#include <cstdio>
#include <cstdlib>
#include <cctype>
#include <cmath>using namespace std;char str[111][111];
int s[111][111];
int t, n, m;
int dir[8][2]={{-1,-1},{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1}};int judge(char ch, int fff)//判断是否可以连成五子,并且用s数组标记
{int num5 = 0;for(int i=1; i<=n; i++){for(int j=1; j<=m; j++){if(str[i][j]==ch){for(int i1=0; i1<4; i1++){int x1 = i, y1 = j, x2 = i, y2 = j;int num = 1;int num1 = 0, num2 = 0;while(x1>=1&&x1<=n&&y1>=1&&y1<=m){x1+=dir[i1][0];y1+=dir[i1][1];if(str[x1][y1]==ch&&x1>=1&&x1<=n&&y1>=1&&y1<=m)num1++;elsebreak;}while(x2>=1&&x2<=n&&y2>=1&&y2<=m){x2+=dir[i1+4][0];y2+=dir[i1+4][1];if(str[x2][y2]==ch&&x2>=1&&x2<=n&&y2>=1&&y2<=m)num2++;elsebreak;}num+=num1+num2;if(num>=5){num5++;if(fff == 1)for(int i2=1; i2<=num; i2++){s[x2+dir[i1][0]*i2][y2+dir[i1][1]*i2] += 1;}}}}}}return num5;
}int solve(char ch)//把一点改为'.'然后判断是否可以连成五子
{int ans = 0;for(int i=1; i<=n; i++){for(int j=1; j<=m; j++){if(str[i][j]==ch && s[i][j]>=1){str[i][j] = '.';ans = judge(ch, 2);if(ans==0)return 1;str[i][j] = ch;}}}return 0;
}int main()
{scanf("%d", &t);while(t--){scanf("%d %d", &n, &m);for(int i=1; i<=n; i++){scanf("%s", str[i]+1);}int sum1 = 0, sum2 = 0;for(int i=1; i<=n; i++){for(int j=1; j<=m; j++){if(str[i][j] =='1')sum1++;if(str[i][j] == '2')sum2++;}}int ans = 0;if(sum2<sum1 || sum2>sum1+1)//棋子个数ans = 1;else{memset(s, 0, sizeof(s));int num1 = judge('1', 1);//求是否可以连成五子int num2 = judge('2', 1);//同上if(sum1 == sum2)//个数一样多因为黑的先,所以黑的不能赢{if(num2>0)//黑五子情况不能产生ans = 1;else if(num1==0)//黑白都没有五子产生ans = 4;else{int ss = solve('1');//求改掉一点是否还能连成5子,不能连成表示白赢if(ss)ans = 2;elseans = 1;}}else{if(num1>0)ans = 1;else if(num2==0)ans = 4;else{int ss = solve('2');//求改掉一点是否可以连成5子,不能连成黑赢if(ss)ans = 3;elseans = 1;}}}switch(ans){case 1:printf("fault\n");break;case 2:printf("white\n");break;case 3:printf("black\n");break;default:printf("other\n");}}return 0;
}

转载于:https://www.cnblogs.com/mengzhong/p/5392502.html

2015轻院校赛 H五子棋相关推荐

  1. 第九届玲珑轻院校赛随笔

    迎着小雨,我来到了翻车圣地-轻工业学院,我是来这几次翻几次,所以一开始心情就十分忐忑,开始的时候特别高大上,弄得跟省赛一样,还有个参赛证,不过因为意外,比赛推迟了一个小时,然后我们提前10分钟拿到了题 ...

  2. hdu5491(2015合肥网络赛H题)

    题意: 给出三个数字D.s1和s2,用L来表示D的二进制表示中1的个数,L在区间[s1,s2]中,我们要找到离D最近的并且大于D的一个数字,且这个数字的L也落在区间[s1,s2]中. 思路: 一直超时 ...

  3. hihoCoder1233(2015北京网络赛H题)

    转载自:http://blog.csdn.net/queuelovestack/article/details/48625899 题意: 有n个卡槽,放有体积不同的n个空盒子,每次你可以移动一个空盒子 ...

  4. hdu5444(2015长春网络赛H题)

    题意: 给出一棵树的描述,这棵树构造出来,满足从右到左数值递增,根在最下面,然后有一些询问x,我们要输出从根走到x的路径,w:向左.e:向右. 思路: 建树的时候,首先第一个点一定是根,然后比根小的建 ...

  5. 电赛综合测评题练习(二)-(与2015年电赛综合测评要求类似)

    2015年电赛综合测评(部分要求有区别) 系列文章 T1:电赛综合测评题练习(一)-(与2013年电赛综合测评要求类似) 点击下载仿真文件1(请使用Multisim 14及以上版本打开) T2:电赛综 ...

  6. 2019 ICPC 南昌网络赛 H. The Nth Item

    2019 ICPC 南昌网络赛 H. The Nth Item 题目大意:已知一个数列F(n): F(0)=0,F(1)=1 F(n)=3∗F(n−1)+2∗F(n−2),(n≥2) ​ 给你一个操作 ...

  7. 2020 ccpc 吉林省赛 H

    2020 ccpc 吉林省赛 H 题意: 给一组数 a i a_i ai​,求 ∑ i = 1 n ∑ j = 1 n [ g c d ( a i , a j ) = d ] \sum\limits_ ...

  8. 【立创EDA开源推荐】005期 | 2019年电赛H题 电磁炮(激光版)

    工程名称: 2019年电赛H题 电磁炮(激光版) 工程作者:zzxw 工程主页链接: https://oshwhub.com/kakaka/tu-ya-zhi-neng-yun-duo 开源协议: G ...

  9. 2017年电赛国赛H题《远程幅频特性测试装置》训练总结(信号接收采集部分)

    系列文章链接目录 一.2017年电赛国赛H题<远程幅频特性测试装置>训练总结(DDS信号源部分) 二.2017年电赛国赛H题<远程幅频特性测试装置>训练总结(放大器部分) 三. ...

  10. 树形DP+并查集+左偏树, HDU-5575,Discover Water Tank,2015上海现场赛D题

    只是ACM/IICPC 2015 上海区域赛的一道题.原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=5575 题目描述 N-1个木板把一个水箱划分成了N ...

最新文章

  1. 请收下这份NLP热门词汇解读
  2. [转]kaldi中的特征提取
  3. 现存问题以及解决方案:在ASP.NET AJAX中从客户端向服务器端传送DataTable
  4. 103. Leetcode 213. 打家劫舍 II (动态规划-打家劫舍)
  5. shiro与springMVC整合
  6. 四位共阳极数码管显示函数_【项目8-任务10-小组13】利用四位数码管实现动态扫描显示...
  7. 论文盘点:性别年龄分类器详解
  8. C++原子操作 atomic的使用及效率
  9. “头腾大战”烧至在线办公:微信封禁飞书做错了吗?
  10. python有趣的简单代码_简单代码一学就会,Python生成GIF动图
  11. js原生ajax跨域请求,封装一个原生js的ajax请求,支持IE9CORS跨域请求
  12. postgres的序列(Sequence)的使用
  13. javascript移动设备触屏事件
  14. re.sub对多处字符串进行替换
  15. NWT失败反思:公司都死了,还怕得罪人
  16. 这一年,这些书:2020年读书笔记
  17. Java 设计模式 Factory Method 工厂方法 模式
  18. Windows和Linux平台上实现Word转PDF
  19. 不允许有匹配 “[xX][mM][lL]“ 的处理指令目标。
  20. JAVA仿百度网盘(JAVA毕业设计)

热门文章

  1. 获取表结构信息(字段名,类型,长度,精度,小数位数,主键,自动增长)...
  2. TP框架设置的LOG_LEVEL不起作用
  3. nth-of-type和nth-child的区别
  4. hdu1599+floyd最小环
  5. C# System.Timers.Timers的用法在工控设备上位中的用法
  6. 图论专题考试2 爆零祭
  7. php装curl拓展出错
  8. 一道money计算题引发的思考
  9. 从AWS宕机事件说开去,热闹看完该学会什么?
  10. 用户空间与内核空间数据交换的方式(3)------seq_file