五子棋
2014年北航机试第二题-五子棋
题目描述
输入一个19*19的矩阵,只包含数字0,1,2。0表示空格,1、2表示两个人的棋子。
要求判断是否有人获胜(横向或竖向或斜向是否连成五个同色棋子)
题目说明输入样例保证每条线上至多只有连线5个同色棋子,并且保证至多只有1人获胜。
如果有人获胜,输出获胜者1或2,加一个冒号,接着输出获胜的五连珠的第一个棋子的坐标,从上到下从左到右序号最小的为第一个,序号从1开始编号。如果无人获胜,输出No。
输入
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0
输出 No
其它案例自行修改
C代码
#include<stdio.h>
int judge(int qipan[19][19]){
int i, j, t;
for (i = 0; i<19; i++){
for (j = 0; j<19; j++){
if (qipan[i][j] != 0){
t = qipan[i][j];
if (j<19 - 4){//判断横向上是否连成五个
if (t == qipan[i][j + 1] && t == qipan[i][j + 2] && t == qipan[i][j + 3] && t == qipan[i][j + 4]){
printf("%d:(%d,%d)\n", t, i, j);
return t;
}
}
if (i<19 - 4){//判断纵向上是否连成五个
if (t == qipan[i + 1][j] && t == qipan[i + 2][j] && t == qipan[i + 3][j] && t == qipan[i + 4][j]){
printf("%d:(%d,%d)\n", t, i, j);
return t;
}
}
if (i<19 - 4 && j<19 - 4){//判断右下方是否连成五个
if (t == qipan[i + 1][j + 1] && t == qipan[i + 2][j + 2] && t == qipan[i + 3][j + 3] && t == qipan[i + 4][j + 4]){
printf("%d:(%d,%d)\n", t, i, j);
return t;
}
}
if (i<19 - 4 && j>3){//判断左下方是否连成五个
if (t == qipan[i + 1][j - 1] && t == qipan[i + 2][j - 2] && t == qipan[i + 3][j - 3] && t == qipan[i + 4][j - 4]){
printf("%d:(%d,%d)\n", t, i, j);
return t;
}
}
}
}
}
return 0;
}
int main(){
int qipan[19][19];
int i = 0, j = 0, res = 0;
for (i = 0; i<19; i++){
for (j = 0; j<19; j++){
scanf("%d", &qipan[i][j]);
}
}
res = judge(qipan);
if (res == 0){
printf("no\n");
}
return 0;
}
上一篇: 利用php.ini禁用一些危险php函数