题解 | #井字棋#
井字棋
http://www.nowcoder.com/practice/0375c1d206ef48a3894f72aa07b2fdde
通解:
三字棋(井字棋)、5字棋、n(n为奇数)字棋.......都可以,只更改n的值即可
#include<stdio.h> int main() { char arr[3][3]={0}; for(int i=0;i<3;i++) { for(int j=0;j<3;j++) { scanf("%c",&arr[i][j]); getchar(); } } int a=0,b=0,c=0,d=0; char ch=0; int i=0,j=0; int n=3; for( i=0;i<n;i++) { for( j=0;j<n-1;j++) { //判断每一行是否相等 if(arr[i][j]==arr[i][j+1]) { ch=arr[i][j]; a++; if(a==n-1) break; } //判断每一列是否相等 if(arr[j][i]==arr[j+1][i]) { ch=arr[j][i]; b++; } } if(a==n-1) { break; } a=0; if(b==n-1) { break; } b=0; } //判断斜线是否相等 for(j=0 ,i=0;i<n-1;i++,j++) { if(arr[i][j]==arr[i+1][j+1]) { c++; } } //判断斜线是否相等 for(i=n-1,j=0;i>0;i--,j++) { if(arr[i][j]==arr[i-1][j+1]) { d++; } } if((c==n-1||d==n-1)) ch=arr[(n/2)][(n/2)]; if((a==n-1||b==n-1||c==n-1||d==n-1)&&ch=='K') { printf("KiKi wins!"); } else if((a==n-1||b==n-1||c==n-1||d==n-1)&&ch=='B') { printf("BoBo wins!"); } else { printf("No winner!"); } return 0; }