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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 | 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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix