l洛谷第二题
题目描述
给定一个 n\times nn×n 的正方形棋盘,几位玩家在上面玩三子棋。
三子棋的规则是每位玩家轮流写下一个字母,同一名玩家的字母相同。当有一名玩家在行、列或者斜线上连续组成了 33 个自己的字母时,即为获胜。
给定棋盘的当前状态,请找出获胜的玩家。
输入格式
输入第一行为一个整数 nn。
接下来的 nn 行,每行 nn 个字符,可能为大写字母或 .(表示没人在这下棋)。
输出格式
输出一行一个大小字母,表示获胜的玩家所写的那种字母。
如果没有人获胜,则输出 ongoing。
数据保证最多只有一个人获胜。
输入输出样例
3
XOC
XOC
X..
X
4
....
..A.
AAB.
.B.B
ongoing
3
ABB
AAA
BBA
A
说明/提示
数据规模与约定
对于 100\%100% 的数据,保证 1\le n\le 301≤n≤30。
解题思路:
首先先普普通通的输入我们的棋盘
用memset进行初始化
下面写一个判断函数来判断是否有玩家的字母连成一条线,具体判断函数如下关键点。
我们还需要一个sign变量(bool)记录是否有赢家,以此判断是否输出"ongoing"
最后用一个函数输入字母。
关键点:
void JUDGE(int x,int y)
{
if((MAP[x-1][y]==MAP[x][y])&&(MAP[x+1][y]==MAP[x][y]))
OUT(MAP[x][y]);//行
if((MAP[x][y-1]==MAP[x][y])&&(MAP[x][y+1]==MAP[x][y]))
OUT(MAP[x][y]);//列
if((MAP[x-1][y-1]==MAP[x][y])&&(MAP[x+1][y+1]==MAP[x][y]))
OUT(MAP[x][y]);//斜线
if((MAP[x+1][y-1]==MAP[x][y])&&(MAP[x-1][y+1]==MAP[x][y]))
OUT(MAP[x][y]);//斜线
}
具体代码:
#include<bits/stdc++.h>
using namespace std;
int n;
char MAP[35][35];
bool sign=true;//记录是否有赢家
void JUDGE(int,int),OUT(char);
int main()
{
memset(MAP,0,sizeof(MAP));
scanf("%d",&n);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>MAP[i][j];
for(int i=1;i<=n&&sign;i++)//循环必须判断sign情况 不然可能重复输出
for(int j=1;j<=n&&sign;j++)
JUDGE(i,j);
if(sign)//若遍历后无赢家输出"ongoing"
printf("ongoing");
return 0;
}
void JUDGE(int x,int y)
{
if((MAP[x-1][y]==MAP[x][y])&&(MAP[x+1][y]==MAP[x][y]))
OUT(MAP[x][y]);//行
if((MAP[x][y-1]==MAP[x][y])&&(MAP[x][y+1]==MAP[x][y]))
OUT(MAP[x][y]);//列
if((MAP[x-1][y-1]==MAP[x][y])&&(MAP[x+1][y+1]==MAP[x][y]))
OUT(MAP[x][y]);//斜线
if((MAP[x+1][y-1]==MAP[x][y])&&(MAP[x-1][y+1]==MAP[x][y]))
OUT(MAP[x][y]);//斜线
}
void OUT(char c)
{
if(c!='.')//棋盘中可能有连续3个'.'构成的线
{
printf("%c",c);
sign=false;//更新sign
}
}
l洛谷第二题的更多相关文章
- 洛谷 P4999(数位DP)
###洛谷 P4999 题目链接 ### 题目大意:给你一个区间,求这段区间中所有数的,数位上的,数字之和. 分析: 这题与 洛谷 P2602 相似,稍微改一下就可以了. 求出 0 ~ 9 的个数,然 ...
- l洛谷 (水题)P4144 大河的序列
题目戳 Solution: 这题前面都是废话,关键的一句就是本题求的是序列中连续一段的相与值(&)+相或值(|)最大,然后对这个值进行快速幂取模.考虑到两个数相与最大能得到的就是这两个数中的最 ...
- l洛谷 P3926 SAC E#1 - 一道不可做题 Jelly
P3926 SAC E#1 - 一道不可做题 Jelly 题目背景 SOL君(炉石主播)和SOL菌(完美信息教室讲师)是好朋友. 题目描述 SOL君很喜欢吃蒟蒻果冻.而SOL菌也很喜欢蒟蒻果冻. 有一 ...
- 洛谷P3567[POI2014]KUR-Couriers(主席树+二分)
题意:给一个数列,每次询问一个区间内有没有一个数出现次数超过一半 题解: 最近比赛太多,都没时间切水题了,刚好日推了道主席树裸题,就写了一下 然后 WA80 WA80 WA0 WA90 WA80 ?? ...
- l洛谷P4779 【模板】单源最短路径(标准版)(dijkstra)
题目描述 给定一个 NN 个点,MM 条有向边的带非负权图,请你计算从 SS 出发,到每个点的距离. 数据保证你能从 SS 出发到任意点. 输入格式 第一行为三个正整数 N, M, SN,M,S. 第 ...
- [USACO07MAR]黄金阵容均衡Gold Balanced L…(洛谷 1360)
题目描述 Farmer John's N cows (1 ≤ N ≤ 100,000) share many similarities. In fact, FJ has been able to na ...
- 洛谷水题p1421小玉买文具题解
题目描述 班主任给小玉一个任务,到文具店里买尽量多的签字笔.已知一只签字笔的价格是1元9角,而班主任给小玉的钱是a元b角,小玉想知道,她最多能买多少只签字笔呢. 输入输出格式 输入格式: 输入的数据, ...
- l洛谷——P1211 [USACO1.3]牛式 Prime Cryptarithm
P1211 [USACO1.3]牛式 Prime Cryptarithm 题目描述 下面是一个乘法竖式,如果用我们给定的那n个数字来取代*,可以使式子成立的话,我们就叫这个式子牛式. *** x ** ...
- l洛谷 P2326 AKN’s PPAP
P2326 AKN’s PPAP 题目描述 “I have a pen,I have an apple.Eh,Apple-Pen!. I have a pen,I have pineapple.En, ...
- 洛谷 P1572 计算分数
P1572 计算分数 题目描述 Csh被老妈关在家里做分数计算题,但显然他不愿意坐这么多复杂的计算.况且在家门口还有Xxq在等着他去一起看电影.为了尽快地能去陪Xxq看电影,他把剩下的计算题交给了你, ...
随机推荐
- JDBC与JPA--初学JPA
最近工程中用到JPA,头一次接触,踩了不少坑.刚好复习到JDBC,发现JPA用起来真是很简单.就对比一下这两者的区别 总结:JDBC是更接近数据库SQL的抽象,使用时依然使用的是SQL.优点是靠近 ...
- qt中的一些对话框(个人备忘录)
一.标准对话框 1.对于颜色对话框 void MyWidget::on_pushButton_clicked() { QColorDialog dialog(Qt::red,this); dialog ...
- PYTHON常用五大库
python常用五大库 Numpy Numpy 是python科学计算的基础包,本书大部分内容都基于numpy以及构建于其上的库.其功能有: 快速高效的多维数组对象ndarray 用于对数组执行元素级 ...
- Java中double保留2位小数(精度丢失)的两种方式
Java中double保留2位小数(精度丢失)的两种方式 在我们日常开发中,使用double数据类型进行计算,偶尔会出现精度丢失的情况,例如实际结果是0.75,就可能出现0.7500000000000 ...
- HTML悬浮div
需求,html底部为地图,上层是各个div HTML<body> //地图 <div id='map' id="demo1"></div> &l ...
- .netCore Nuget包引用记录
1.画图 System.Drawing.Common 2.
- OSIDP-内存管理-07
专业术语 页框:内存中固定长度的块. 页:外存中固定长度的块. 段:外存中可变长度的块. 内存管理需求 重定位:程序从内存换出到外存后,再换回内存时,在内存空间中的位置和原先的位置有极大可能不相同.此 ...
- IT工具知识-11:一种安卓投屏到Win10失败的解决方法
软硬件平台 电脑:WIN10 LTSC 手机:红米K30Pro/MIUI 11.0.26 投屏软件:安卓端-自带投屏,WIN10-自带投屏(连接) 故障描述 之前还能用的,但是在换了个路由器之后就不能 ...
- Q:oracle锁表如何处理
解决ORA-00054资源正忙的问题 有时候在drop表或者其他对象的时候,会遇到ORA-00054:资源正忙,要求指定NOWAIT(中文字符集)或者ORA-00054: resource busy ...
- 错误小记录: python取余操作
-23 % 3 >>>1 23%-3 >>>-1 -23%-3 >>>-2 在计算机语言中,同号的整数运算,所有语言都遵循尽量让商小的原则,所以 ...