程序设计入门—Java语言 第五周编程题 2井字棋(5分)
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的数字。
输出格式:
三种输出之一:
- X
- O
- NIL
均为大写字母。
输入样例:
- 4
- 1 0 0 1
- 0 1 0 0
- 0 0 1 0
- 1 0 0 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分)的更多相关文章
- 程序设计入门—Java语言 第六周编程题 1 单词长度(4分)
第六周编程题 依照学术诚信条款,我保证此作业是本人独立完成的. 1 单词长度(4分) 题目内容: 你的程序要读入一行文本,其中以空格分隔为若干个单词,以'.'结束.你要输出这行文本中每个单词的长度.这 ...
- 程序设计入门——C语言 第8周编程练习 1 单词长度(4分)
第8周编程练习 依照学术诚信条款,我保证此作业是本人独立完成的. 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系统 ...
- 程序设计入门——C语言 第7周编程练习 1多项式加法(5分)
第7周编程练习 依照学术诚信条款,我保证此作业是本人独立完成的. 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系统 ...
- 程序设计入门——C语言 第6周编程练习 2 完数(5分)
2 完数(5分) 题目内容: 一个正整数的因子是所有可以整除它的正整数.而一个数如果恰好等于除它本身外的因子之和,这个数就称为完数.例如6=1+2+3(6的因子是1,2,3). 现在,你要写一个程序, ...
- 程序设计入门——C语言 第6周编程练习 1 分解质因数(5分)
1 分解质因数(5分) 题目内容: 每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,这几个素数就都叫做这个合数的质因数.比如,6可以被分解为2x3,而24可以被分解为2x2x2x3. ...
- 程序设计入门——C语言 第5周编程练习 1高精度小数(10分)
1 高精度小数(10分) 题目内容: 由于计算机内部表达方式的限制,浮点运算都有精度问题,为了得到高精度的计算结果,就需要自己设计实现方法. (0,1)之间的任何浮点数都可以表达为两个正整数的商,为了 ...
- 程序设计入门——C语言 第4周编程练习 2 念整数(5分)
题目内容: 你的程序要读入一个整数,范围是[-100000,100000].然后,用汉语拼音将这个整数的每一位输出出来. 如输入1234,则输出: yi er san si 注意,每个字的拼音之间有一 ...
- 程序设计入门——C语言 第4周编程练习 1 素数和(5分)
题目内容: 我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推. 现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的 ...
- 程序设计入门——C语言 第3周编程练习 2 数字特征值(5分)
2 数字特征值(5分) 题目内容: 对数字求特征值是常用的编码算法,奇偶特征是一种简单的特征值.对于一个整数,从个位开始对每一位数字编号,个位是1号,十位是2号,以此类推.这个整数在第n位上的数字记作 ...
随机推荐
- [转]javascript 快速隐藏/显示万行表格列的方法
原文地址:javascript 快速隐藏/显示万行表格列的方法 隐藏表格列,最常见的是如下方式: td.style.display = "none"; 这种方式的效率极低.例如,隐 ...
- C++ 扫描文件夹下所有文件
void GetFilesFromDirectory(std::vector<std::string> &files, const char *directoryPath) { s ...
- 使用所见即所得文本编辑器编辑文本存入数据库后通过ajax获取服务器json_encode的数据到前台,文本内容上边的html标签不解析
使用所见即所得文本编辑器编辑文本存入数据库后通过ajax获取服务器json_encode的数据到前台,文本内容上边的html标签不解析 因为我在前台使用了jquery的text()方法,而不是html ...
- html中嵌入天气预报
先看效果: html代码: <div id="weather"></div> js代码: function findWeather() { var city ...
- js日期字符串增加天数的函数
//日期加天数的方法 //dataStr日期字符串 //dayCount 要增加的天数 //return 增加n天后的日期字符串 function dateAddDays(dataStr,dayCou ...
- 分类指标准确率(Precision)和正确率(Accuracy)的区别
http://www.cnblogs.com/fengfenggirl/p/classification_evaluate.html 一.引言 分类算法有很多,不同分类算法又用很多不同的变种.不同的分 ...
- SpringMVC源码剖析(二)- DispatcherServlet的前世今生
上一篇文章<SpringMVC源码剖析(一)- 从抽象和接口说起>中,我介绍了一次典型的SpringMVC请求处理过程中,相继粉墨登场的各种核心类和接口.我刻意忽略了源码中的处理细节,只列 ...
- Struts2(三):新建Struts2工程
下载的struts2xx-all.zip包对搭建项目的作用 一般情况下,我们下载一个Struts2的full包时,并不知道新建过程中需要哪些包,那么这时我们可以从下载的包中解压出的目录\apps\st ...
- 【转】PowerShell入门(五):Cmd命令与PowerShell命令的交互
转至:http://www.cnblogs.com/ceachy/archive/2013/02/18/Call_Between_Cmd_And_PowerShell.html 单独使用一种脚本来完成 ...
- Microsoft JScript提示‘DIRECT’未定义(2014-08-26记)
当启动Applet的时候,页面弹出:DIRECT’未定义可能的问题是:java控制面板的网络设置问题,可能使用了代理解决: 打开java控制面板--->网络设置-->直接连接-->确 ...