2

井字棋(5分)

题目内容:

嗯,就是视频里说的那个井字棋。视频里说了它的基本思路,现在,需要你把它全部实现出来啦。

你的程序先要读入一个整数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(三个大写字母,中间是字母I(India的I)。

注意:所给的棋盘上的棋子分布可能出现同一个棋子有多处满足获胜的条件,但是不会出现两种棋子都获胜的情况。

输入格式:

一个代表棋盘大小的数字n,后面跟上nxn个0或1的数字。

输出格式:

三种输出之一:

  1. X
  2. O
  3. NIL

均为大写字母。

输入样例:

  1. 4
  2. 1 0 0 1
  3. 0 1 0 0
  4. 0 0 1 0
  5. 1 0 0 1

输出样例:

  1. X

时间限制:500ms内存限制:32000kb

import java.util.Scanner; 

public class hello
{ public static void main(String[] args)
{
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
int n=in.nextInt(); //范围是[3,100]
int[][] board= new int[n][n];
boolean gotResult=false;
int numOfX=0;
int numOf0=0; //读入矩陈阵
for(int i=0;i<board.length;i++)
{
for(int j=0;j<board[i].length;j++)
{
board[i][j]=in.nextInt();
}
}
//判断行
for(int i=0;i<board.length;i++)
{
for(int j=0;j<board[i].length;j++)
{
if(board[i][j]==1)
{
numOfX++;
}
else
{
numOf0++;
}
}
if(numOfX==n||numOf0==n)
{
gotResult=true;
break;
}
else
{
numOfX=0;
numOf0=0;
}
} //判断列
if(!gotResult)
{
for(int j=0;j<n;j++)
{
for(int i=0;i<n;i++)
{
if(board[i][j]==1)
{
numOfX++;
}
else
{
numOf0++;
}
}
if(numOfX==n||numOf0==n)
{
gotResult=true;
break;
}
else
{
numOfX=0;
numOf0=0;
}
}
} //判断对角线
if(!gotResult)
{
for(int i=0;i<n;i++)
{
if(board[i][i]==1)
{
numOfX++;
}
else
{
numOf0++;
}
}
if(numOfX==n||numOf0==n)
{
gotResult=true; }
else
{
numOfX=0;
numOf0=0;
}
} //判断反对角线
if(!gotResult)
{
for(int i=0;i<n;i++)
{
if(board[i][n-i-1]==1)
{
numOfX++;
}
else
{
numOf0++;
}
}
if(numOfX==n||numOf0==n)
{
gotResult=true;
}
else
{
numOfX=0;
numOf0=0;
}
} //输出结果 if(gotResult)
{
if(numOfX==n)
{
System.out.println("X");
}
else if(numOf0==n)
{
System.out.println("0");
}
}
else
{
System.out.println("NIL");
}
}
}

  

程序设计入门—Java语言 第五周编程题 2井字棋(5分)的更多相关文章

  1. 程序设计入门—Java语言 第六周编程题 1 单词长度(4分)

    第六周编程题 依照学术诚信条款,我保证此作业是本人独立完成的. 1 单词长度(4分) 题目内容: 你的程序要读入一行文本,其中以空格分隔为若干个单词,以'.'结束.你要输出这行文本中每个单词的长度.这 ...

  2. 程序设计入门——C语言 第8周编程练习 1 单词长度(4分)

    第8周编程练习 依照学术诚信条款,我保证此作业是本人独立完成的. 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系统 ...

  3. 程序设计入门——C语言 第7周编程练习 1多项式加法(5分)

    第7周编程练习 依照学术诚信条款,我保证此作业是本人独立完成的. 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系统 ...

  4. 程序设计入门——C语言 第6周编程练习 2 完数(5分)

    2 完数(5分) 题目内容: 一个正整数的因子是所有可以整除它的正整数.而一个数如果恰好等于除它本身外的因子之和,这个数就称为完数.例如6=1+2+3(6的因子是1,2,3). 现在,你要写一个程序, ...

  5. 程序设计入门——C语言 第6周编程练习 1 分解质因数(5分)

    1 分解质因数(5分) 题目内容: 每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,这几个素数就都叫做这个合数的质因数.比如,6可以被分解为2x3,而24可以被分解为2x2x2x3. ...

  6. 程序设计入门——C语言 第5周编程练习 1高精度小数(10分)

    1 高精度小数(10分) 题目内容: 由于计算机内部表达方式的限制,浮点运算都有精度问题,为了得到高精度的计算结果,就需要自己设计实现方法. (0,1)之间的任何浮点数都可以表达为两个正整数的商,为了 ...

  7. 程序设计入门——C语言 第4周编程练习 2 念整数(5分)

    题目内容: 你的程序要读入一个整数,范围是[-100000,100000].然后,用汉语拼音将这个整数的每一位输出出来. 如输入1234,则输出: yi er san si 注意,每个字的拼音之间有一 ...

  8. 程序设计入门——C语言 第4周编程练习 1 素数和(5分)

    题目内容: 我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推. 现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的 ...

  9. 程序设计入门——C语言 第3周编程练习 2 数字特征值(5分)

    2 数字特征值(5分) 题目内容: 对数字求特征值是常用的编码算法,奇偶特征是一种简单的特征值.对于一个整数,从个位开始对每一位数字编号,个位是1号,十位是2号,以此类推.这个整数在第n位上的数字记作 ...

随机推荐

  1. P1311 选择客栈

    开始写了一个O(n3)的算法,只得了60,后来思考(找题解),得到了一个O(nk)的算法 其实就是一种预处理的思想,对于每一个客栈而言,只要我们预处理出他前面可以匹配的客栈数量,就可以了. 所以我们记 ...

  2. What is the difference between parameterized queries and prepared statements?

    Both parameterized queries and prepared statements are exactly the same thing. Prepared statement se ...

  3. C语言 ---- 基本数据类型和基本运算 iOS学习-----细碎知识点总结

    // 导入头文件(stdio.h),标准输入输出的头文件,#include <stdio.h> // 程序的入口int main(int argc, const char * argv[] ...

  4. ubuntu 常用命令集合版(一)【大侠勿喷,菜鸟欢迎】(转载)

    1:apt-get:(一般是要加sudo) debian系系统的软件包管理程序(其图形化前端就是大名鼎鼎的新立得了),会自动帮你搞定依赖关系最常用参数:update        —-与你的软件源(在 ...

  5. background-clip,background-origin

    开门见山,简单来说 background-origin定义了background的绘制区域(就是从什么地方开始绘制),三个属性 padding-box 背景图像相对于内边距框来绘制border-box ...

  6. 什么是JSP?它有哪些特点?

    什么是JSP? 它有哪些特点?  JSP是服务器端的一种基于java语言的网页技术,它是由一些JSP标记,java程序段以及HTML文件组成的结合体,以java语言作为其内置的脚本语言.  实质上是通 ...

  7. Android之ViewHolder用法

    http://www.cnblogs.com/mengdd/p/3254323.html (zhuan) http://blog.csdn.net/mrzhang_happy/article/deta ...

  8. android混合开发,webview的java与js互操作

    android原生应用,用webview加载应用中的网页,并且java代码与js代码可以互相操作. 这是混合开发的基石,最基本也最重要的东西,实验代码在这里. 概括说说—— java调js:调用web ...

  9. Hibernate Criteria Restrictions

    HQL运算符 QBC运算符 含义 = Restrictions.eq() 等于equal <>  Restrictions.ne() 不等于not equal >  Restrict ...

  10. 用xib自定义UITableViewCell

    1.文件结构: 2. 先创建一个xib文件,删除原有的view,添加一个TableViewCell控件. 3.ModelTableViewController.m文件 #import "Mo ...