井字棋

来源:互联网 发布:最新java培训视频教程 编辑:程序博客网 时间:2024/05/17 00:55

题目内容:
嗯,就是视频里说的那个井字棋。视频里说了它的基本思路,现在,需要你把它全部实现出来啦。
你的程序先要读入一个整数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
时间限制:500ms内存限制:32000kb

语言:JAVA

import java.util.Scanner;public class Main{    public static void main(String[] args){        Scanner scan = new Scanner(System.in);        int n = scan.nextInt();        int [][] board = new int[n][n];        int numofx =0;        int numofo =0;        boolean getbreak =false;        for(int i=0 ;i<board.length; i++)        {            for(int j =0;j<board[i].length; j++)            {                board[i][j] = scan.nextInt();            }        }        //检查行,列        for(int i=0; i<board.length; i++)        {            numofx = 0;            numofo = 0;            for(int j = 0; j<board[i].length; j++)      //行            {                if(board[i][j] ==0)                {                    numofo ++;                }                else                    numofx ++;            }            if(numofo == n || numofx ==n)            {                getbreak =true;                break;            }            numofo=0;            numofx=0;            for(int j =0; j<board[i].length; j++)       //列            {                if(board[j][i]==0)                {                    numofo++;                }                else                    numofx++;                if(numofo == n || numofx ==n)                {                    getbreak =true;                    break;                }            }        }        //交叉/反交叉        if(!getbreak)        {            numofo=0;            numofx=0;            for(int i=0; i<board.length; i++)            {                if(board[i][i] ==0)                {                    numofo++;                }                else                    numofx++;            }            if(numofo==n || numofx ==n)            {                getbreak = true;            }        }        if(!getbreak)        {            numofo=0;            numofx=0;            for(int i =0; i<board.length; i++)            {                if(board[i][n-1-i] ==0)                {                    numofo++;                }                else                    numofx++;            }            if(numofo ==n|| numofx== n)            {                getbreak =true;            }        }        //输出        if(!getbreak)        {            System.out.print("NIL");        }        else if(numofo ==n)        {            System.out.print("O");        }        else            System.out.print("X");    }}
0 0
原创粉丝点击