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看电影,他把剩下的计算题交给了你, ...
随机推荐
- pnn模型 待整理
https://blog.csdn.net/qq_18293213/article/details/90262378?spm=1001.2101.3001.6650.5&utm_medium= ...
- Windows系统Redis集群搭建
一.参考网址 https://mp.weixin.qq.com/s/ImdEJTdAmCFJsT55rici0Q 二.Redis版本 注意:搭建windows版的redis集群,redis的版本需要5 ...
- 西瓜书3.4 解题报告(python 多分类学习 十折交叉法)
偷懒找了UCI上最小的一个数据集,数据大约是集装箱起重机的转动速度.角度,判断其力量大小(我不懂起重机啊啊啊) 虽然不懂但并不妨碍写代码分类,显然标记就是力量,分为0.3.0.5.0.7三种.具体的模 ...
- 因为更新了ipykernel 导致 VS Code 中Jupyter 一直处于连接状态的 解决办法
重新安装VS Code 当中的Jupyter插件即可(我选择的是upgrade当前的jupyter插件)
- C语言初级阶段5——函数1
C语言初级阶段5--函数1 函数的基本概念 1.函数:理解为封装功能的容器. 主函数是函数的入口 2.函数定义的基本格式: 返回值类型:常用的基本数据类型,执行完以后,函数会得到一个什么类型的值,如果 ...
- 对Java要学东西的认识 (一点点javascript见解)
JavaScript是一种脚本语言,它采用小程序段的方式实现编程.像其它脚本语言一样,JavaScript同样已是一种解释性语言,它提供了一个易的开发过程.它的基本结构形式与C.C++.VB十分类似. ...
- Crypto入门 (三)Morse
前言: Morse电码(Morsecode)是大家耳熟能详的编码方式,很多人都误认为它是一种加密方式,但其实它是一种编码,因为它并不存在密钥.在只能使用电报长短音传递信息的条件下,使用摩斯电码是为了方 ...
- OpenCV图像拼接函数
图像拼接函数 第一种方法:通过遍历图像,将待拼接的图像每个像素赋值给输出图像 //图像拼接函数 //imageVector 输入图像数组 //outputImage 输出图像 //colCount_ ...
- revit添加扩展组件
revit 添加组件方法: 查找本地这个地址: C:\Users\用户名\AppData\Roaming\Autodesk\Revit\Addins\2018 下载网上找到的插件,一般从github查 ...
- ORACLE 去重
-----------------------------------------------------------------------------模拟数据------------------- ...