数组:井字棋
来源:互联网 发布:iis批量绑定域名 编辑:程序博客网 时间:2024/06/06 04:44
题目内容:
嗯,就是视频里说的那个井字棋。视频里说了它的基本思路,现在,需要你把它全部实现出来啦。
你的程序先要读入一个整数n,范围是[3,100],这表示井字棋棋盘的边长。比如n=3就表示是一个3x3的棋盘。然后,要读入n行,每行n个数字,每个数字是1或0,依次表示[0,0]到[n-1,n-1]位置上的棋子。1表示X,0表示O(大写字母O)。
你的程序要判断其中是否存在某一方获胜,获胜的条件是存在整行或整列或整条对角线或整条反对角线上是相同的棋子。如果存在,则输出代表获胜一方字母:X或O(大写字母X或O);如果没有任何一方获胜,则输出NIL(三个大写字母)。
注意:所给的棋盘上的棋子分布可能出现同一个棋子有多处满足获胜的条件,但是不会出现两种棋子都获胜的情况。
输入格式:
一个代表棋盘大小的数字n,后面跟上nxn个数字。
输出格式:
三种输出之一:
X
O
NIL
均为大写字母。
输入样例:
4
1 0 0 1
0 1 0 0
0 0 1 0
1 0 0 1
输出样例:
X
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
int SIZE = in.nextInt();
int[][] board = new int[SIZE][SIZE];
boolean gotResult = false;
int numOfX = 0;
int numOfO = 0;
//读入矩阵
for ( int i=0; i<SIZE; i++ )
{
for ( int j=0; j<SIZE; j++ )
{
board[i][j] = in.nextInt();
}
}
// 检查行
for ( int i=0; i<SIZE; i++ )
{
numOfX = 0;
numOfO = 0;
for ( int j=0; j<SIZE; j++ )
{
if ( board[i][j] == 1 )
{
numOfX ++;
}
else
{
numOfO ++;
}
}
if ( numOfX == SIZE || numOfO == SIZE )
{
gotResult = true;
break;
}
}
//检查列
if ( !gotResult )
{
for ( int i=0; i<SIZE; i++ )
{
numOfX = 0;
numOfO = 0;
for ( int j=0; i<SIZE; i++ )
{
if ( board[j][i] == 1 )
{
numOfX ++;
}
else
{
numOfO ++;
}
}
if ( numOfX == SIZE || numOfO == SIZE )
{
gotResult = true;
break;
}
}
}
// 检查对角线
if ( !gotResult )
{
numOfX = 0;
numOfO = 0;
for ( int i=0; i<SIZE; i++ )
{
if ( board[i][i] == 1 )
{
numOfX ++;
}
else
{
numOfO ++;
}
}
if ( numOfX == SIZE || numOfO == SIZE )
{
gotResult = true;
}
}
// 检查反对角线
if ( !gotResult )
{
numOfX = 0;
numOfO = 0;
for ( int i=0; i<SIZE; i++ )
{
if ( board[i][SIZE-i-1] == 1 )
{
numOfX ++;
}
else
{
numOfO ++;
}
}
if ( numOfX == SIZE || numOfO == SIZE )
{
gotResult = true;
}
}
if ( gotResult )//输出结果
{
if ( numOfX == SIZE )
{
System.out.println("X");
}
else
{
System.out.println("O");
}
}
else
{
System.out.println("NIL");
}
}
}
- 数组:井字棋
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 【Caffe的C++接口使用说明(一)】caffe_windows下的第一个测试程序学习教程
- #300. 【CTSC2017】吉夫特
- caffe学习笔记(八)——binaryproto 转 npy、mat文件
- C语言单向链表的实现
- 【VS插件】Image Watch插件
- 数组:井字棋
- 【脚本语言系列】关于Python网页服务Plone,你需要知道的事
- D3 force(力导向图)研究之二:如何布局超过十万个节点的图谱
- jQuery选择器总结
- 求小于n的与n互质的数的和
- codeforce 416 div2 C
- 函数:分解质因数
- HDU2209-翻纸牌游戏
- 神经网络中的反向传播法算法推导及matlab代码实现