KiKi和BoBo玩 “井”字棋。也就是在九宫格中,只要任意行、列,或者任意对角线上面出现三个连续相同的棋子,就能获胜。请根据棋盘状态,判断当前输赢。
KiKi和BoBo玩 “井”字棋。也就是在九宫格中,只要任意行、列,或者任意对角线上面出现三个连续相同的棋子,就能获胜。请根据棋盘状态,判断当前输赢。
三行三列的字符元素,代表棋盘状态,字符元素用空格分开,代表当前棋盘,其中元素为K代表KiKi玩家的棋子,为O表示没有棋子,为B代表BoBo玩家的棋子。
如果KiKi获胜,输出“KiKi wins!”;
如果BoBo获胜,输出“BoBo wins!”;
如果没有获胜,输出“No winner!”。
K O B O K B B O K
KiKi wins!
#include <stdio.h> int main() { char a[3][3]; int i,j; for(i=0;i<3;i++){ for(j=0;j<3;j++){ a[i][j]=getchar(); getchar(); } } int flag=0; for(i=0;i<3;i++){ if(a[i][0]=='K'&&a[i][1]=='K'&&a[i][2]=='K'){ flag=1; break; } } for(i=0;i<3;i++){ if(a[0][i]=='K'&&a[1][i]=='K'&&a[2][i]=='K'){ flag=1; break; } } if(a[0][0]=='K'&&a[1][1]=='K'&&a[2][2]=='K') flag=1; if(a[0][2]=='K'&&a[1][1]=='K'&&a[2][0]=='K') flag=1; if(a[0][0]=='B'&&a[1][1]=='B'&&a[2][2]=='B') flag=-1; if(a[0][2]=='B'&&a[1][1]=='B'&&a[2][0]=='B') flag=-1; for(i=0;i<3;i++){ if(a[i][0]=='B'&&a[i][1]=='B'&&a[i][2]=='B'){ flag=-1; break; } } for(i=0;i<3;i++){ if(a[0][i]=='B'&&a[1][i]=='B'&&a[2][i]=='B'){ flag=-1; break; } } if(flag==1) printf("KiKi wins!\n"); else if(flag==0) printf("No winner!\n"); else printf("BoBo wins!\n"); }
#include<bits/stdc++.h> using namespace std; char m[3][3]; int main(){ for(int i = 0; i < 3; i++) for(int j = 0; j < 3; j++) cin >> m[i][j]; /*左斜线*/ if(m[0][0] == m[1][1] && m[0][0] == m[2][2]){ if(m[0][0] == 'K') goto K; else if(m[0][0] == 'B') goto B; } /*右斜线*/ if(m[0][2] == m[1][1] && m[0][2] == m[2][0]){ if(m[0][2] == 'K') goto K; else if(m[0][2] == 'B') goto B; } for(int i = 0; i < 3; i++){ /*行相等*/ if(m[i][0] == m[i][1] && m[i][0] == m[i][2]){ if(m[i][0] == 'K') goto K; else if(m[i][0] == 'B') goto B; } /*列相等*/ if(m[0][i] == m[1][i] && m[0][i] == m[2][i]){ if(m[0][i] == 'K') goto K; else if(m[0][i] == 'B') goto B; } } cout << "No winner!" << endl; return 0; K: cout << "KiKi wins!" << endl; return 0; B: cout << "BoBo wins!" << endl; return 0; }
#include<stdio.h> int main() { char arr[3][3] = {0}; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { arr[i][j] = getchar(); getchar(); } } char ret = 0;//接收游戏情况,'K'KiK赢,'B'BoBo赢,0平局 for (int i = 0; i < 3; i++) { //横向 if (arr[i][0] != 'O' && arr[i][0] == arr[i][1] && arr[i][0] == arr[i][2]) { ret = arr[i][0]; break; } //纵向 else if (arr[0][i] != 'O' && arr[0][i] == arr[1][i] && arr[0][i] == arr[2][i]) { ret = arr[0][i]; break; } } //主对角 if (arr[0][0] != 'O' && arr[0][0] == arr[1][1] && arr[0][0] == arr[2][2]) ret = arr[0][0]; else if (arr[0][2] != 'O' && arr[0][2] == arr[1][1] && arr[0][2] == arr[2][0]) ret = arr[0][2]; if (ret == 'K') printf("KiKi wins!\n"); else if (ret == 'B') printf("BoBo wins!\n"); else printf("No winner!\n"); return 0; }
#include<stdio.h> void kwin(){ printf("KiKi wins!\n"); } void bwin(){ printf("BoBo wins!\n"); } void nowin(){ printf("No winner!\n"); } int main(){ char a[3][3],i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) scanf(" %c ",&a[i][j]); if(a[0][0]==a[0][1]&&a[0][0]==a[0][2]){ if(a[0][0]=='K') kwin(); else if(a[0][0]=='B') bwin(); else nowin(); } else if(a[0][0]==a[1][1]&&a[0][0]==a[2][2]){ if(a[0][0]=='K') kwin(); else if(a[0][0]=='B') bwin(); else nowin(); } else if(a[0][0]==a[1][0]&&a[0][0]==a[2][0]){ if(a[0][0]=='K') kwin(); else if(a[0][0]=='B') bwin(); else nowin(); } else if(a[0][1]==a[1][1]&&a[0][1]==a[2][1]){ if(a[0][1]=='K') kwin(); else if(a[0][1]=='B') bwin(); else nowin(); } else if(a[0][2]==a[1][2]&&a[0][2]==a[2][2]){ if(a[0][2]=='K') kwin(); else if(a[0][2]=='B') bwin(); else nowin(); } else if(a[0][2]==a[1][1]&&a[0][2]==a[2][0]){ if(a[0][2]=='K') kwin(); else if(a[0][2]=='B') bwin(); else nowin(); } else if(a[1][0]==a[1][1]&&a[1][0]==a[1][2]){ if(a[1][0]=='K') kwin(); else if(a[1][0]=='B') bwin(); else nowin(); } else if(a[2][0]==a[2][1]&&a[2][0]==a[2][2]){ if(a[2][0]=='K') kwin(); else if(a[2][0]=='B') bwin(); else nowin(); } else nowin(); }
import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String[][] chessBoard = new String[3][3]; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { chessBoard[i][j] = scanner.next(); } } String result = checkMessage(chessBoard); System.out.println(result); } public static String checkMessage(String[][] chessBoard) { String message ; for (int i = 0; i < 3; i++) { if (chessBoard[i][0].equals(chessBoard[i][1]) && chessBoard[i][1].equals(chessBoard[i][2])) { message = checkMan(chessBoard[i][0]); return message; } else if (chessBoard[0][i].equals(chessBoard[1][i]) && chessBoard[1][i].equals(chessBoard[2][i])) { message = checkMan(chessBoard[0][i]); return message; } } message = checkMan(chessBoard[1][1]); if (chessBoard[0][0].equals(chessBoard[1][1]) && chessBoard[1][1].equals(chessBoard[2][2])) { return message; } else if (chessBoard[0][2].equals(chessBoard[1][1]) && chessBoard[1][1].equals(chessBoard[2][0])) { return message; } return message; } public static String checkMan(String str) { switch (str) { case "K": return "KiKi wins!"; case "B": return "BoBo wins!"; case "O": return "No winner!"; } return null; } }
zl=[input().split() for i in range(3)] options=[[zl[i][j] for i in range(3) ] for j in range(3)] options.extend([[zl[i][j] for j in range(3) ] for i in range(3)]) options.extend([[zl[i][i] for i in range(3)]]) options.extend([[zl[i][2-i] for i in range(3)]]) c=0 for i in options: tmp=list(set(i)) if len(tmp)==1 and tmp[0]=='B': print("BoBo wins!") elif len(tmp)==1 and tmp[0]=='K': print("KiKi wins!") else: c+=1 if c==8: print("No winner!")
#include<stdio.h> int main() { char tmp[3][3]; for(int i = 0; i < 3; i++){ for(int j = 0 ; j < 3; j++) { scanf("%c ", &tmp[i][j]); } } int k = 0, b = 0; for(int i = 0; i < 3; i++) { for(int j = 0; j < 3; j++) { if(tmp[i][j] == 'K') k++; if(tmp[i][j] == 'B') b++; } if(k == 3) break; if(b == 3) break; k = 0, b = 0; } int k1 = 0, b1 = 0; for(int i = 0; i < 3; i++) { for(int j = 0; j < 3; j++) { if(tmp[j][i] == 'K') k1++; if(tmp[j][i] == 'B') b1++; } if(k1 == 3) break; if(b1 == 3) break; k1 = 0, b1 = 0; } int k2 = 0, b2 = 0; for(int i = 0; i < 3; i++){ if(tmp[i][i] == 'K') k2++; if(tmp[i][i] == 'B') b2++; if(k2 == 3) break; if(b2 == 3) break; } int k3 = 0, b3 = 0; for(int i = 0; i < 3; i++){ if(tmp[i][2 - i] == 'K') k3++; if(tmp[i][2 - i] == 'B') b3++; if(k3 == 3) break; if(b3 == 3) break; } if(k == 3 || k1 == 3 || k2 == 3 || k3 == 3) printf("KiKi wins!"); else if(b == 3 || b1 == 3 || b2 == 3 || b3 == 3) printf("BoBo wins!"); else printf("No winner!"); }感觉这种方法好呆
#include<bits/stdc++.h> using namespace std; int main() { char ch[3][3]; int flag_k = 0,flag_b = 0; for(int i = 0;i<3;i++){ for(int j = 0;j<3;j++){ cin>>ch[i][j]; } } //判断K if(ch[0][0] == 'K' && ch[0][1] == 'K' && ch[0][2] == 'K') flag_k = 1; else if(ch[1][0] == 'K' && ch[1][1] == 'K' && ch[1][2] == 'K') flag_k = 1; else if(ch[2][0] == 'K' && ch[2][1] == 'K' && ch[2][2] == 'K') flag_k = 1; else if(ch[0][0] == 'K' && ch[1][0] == 'K' && ch[2][0] == 'K') flag_k = 1; else if(ch[0][1] == 'K' && ch[1][1] == 'K' && ch[2][1] == 'K') flag_k = 1; else if(ch[0][2] == 'K' && ch[1][2] == 'K' && ch[2][2] == 'K') flag_k = 1; else if(ch[0][0] == 'K' && ch[1][1] == 'K' && ch[2][2] == 'K') flag_k = 1; else if(ch[0][2] == 'K' && ch[1][1] == 'K' && ch[2][0] == 'K') flag_k = 1; //判断B else if(ch[0][0] == 'B' && ch[0][1] == 'B' && ch[0][2] == 'B') flag_b = 1; else if(ch[1][0] == 'B' && ch[1][1] == 'B' && ch[1][2] == 'B') flag_b = 1; else if(ch[2][0] == 'B' && ch[2][1] == 'B' && ch[2][2] == 'B') flag_b = 1; else if(ch[0][0] == 'B' && ch[1][0] == 'B' && ch[2][0] == 'B') flag_b = 1; else if(ch[0][1] == 'B' && ch[1][1] == 'B' && ch[2][1] == 'B') flag_b = 1; else if(ch[0][2] == 'B' && ch[1][2] == 'B' && ch[2][2] == 'B') flag_b = 1; else if(ch[0][0] == 'B' && ch[1][1] == 'B' && ch[2][2] == 'B') flag_b = 1; else if(ch[0][2] == 'B' && ch[1][1] == 'B' && ch[2][0] == 'B') flag_b = 1; if(flag_k == 1) cout<<"KiKi wins!"<<endl; else if(flag_b == 1) cout<<"BoBo wins!"; else if(flag_k == 0 && flag_b == 0) cout<<"No winner!"; }
#include<iostream> using namespace std; int main() { char str[3][3]; //读取输入 for(int i=0;i<3;i++) { for(int j=0;j<3;j++) cin>>str[i][j]; } char winner='n'; //逐行判断 for(int i=0;i<3;i++) { char help=str[i][0]; bool result=true; for(int j=1;j<3;j++) { if(help==str[i][j]) continue; else { result=false; break; } } if(result) { winner=str[i][0]; break; } } //逐列判断 for(int i=0;i<3;i++) { char help=str[0][i]; bool result=true; for(int j=1;j<3;j++) { if(help==str[j][i]) continue; else { result=false; break; } } if(result) { winner=str[0][i]; break; } } //主对角线 if(winner=='n') if(str[0][0]==str[1][1]&&str[1][1]==str[2][2]) winner=str[0][0]; //副对角线 if(winner=='n') if(str[2][0]==str[1][1]&&str[1][1]==str[0][2]) winner=str[2][0]; switch(winner) { case 'K': cout<<"KiKi wins!"<<endl; break; case 'B': cout<<"BoBo wins!"<<endl; break; default: cout<<"No winner!"<<endl; } return 0; }
#include <bits/stdc++.h> using namespace std; int main() { vector<vector<int>> vv(3, vector<int>(3, 0)); for(int i=0;i<3;i++) { for(int j=0;j<3;j++) { string s; cin >> s; if(s=="K") vv[i][j]++; else if(s=="B") vv[i][j]--; } } for(int i=0;i<3;i++) { int r = 0, c = 0; for(int j=0;j<3;j++) { r += vv[i][j]; c += vv[j][i]; } if(r==3 || c==3) { cout << "KiKi wins!"; return 0; } else if(r==-3 || c==-3) { cout << "BoBo wins!"; return 0; } } int a = vv[0][0]+vv[1][1]+vv[2][2]; int b = vv[2][0]+vv[1][1]+vv[0][2]; if(a==3 || b==3) { cout << "KiKi wins!"; return 0; } else if(a==-3 || b==-3) { cout << "BoBo wins!"; return 0; } cout << "No winner!"; return 0; }
var a = new Array(); var aa = new Array(); var n = 3; while(n--){ var b = readline().split(" "); a.push(b); var res = b[0]+b[1]+b[2]; aa.push(res); } var res= ""; res = a[0][0] + a[1][0] + a[2][0]; aa.push(res); res = a[0][1] + a[1][1] + a[2][1]; aa.push(res); res = a[0][2] + a[1][2] + a[2][2]; aa.push(res); res = a[0][0] + a[1][1] + a[2][2]; aa.push(res); res = a[0][2] + a[1][1] + a[2][0]; aa.push(res); var f = false; for(i=0;i<aa.length;i++){ if(aa[i] == "KKK") {console.log("KiKi wins!"); f = true; break;} if(aa[i] == "BBB") {console.log("BoBo wins!"); f = true; break;} } if(!f) console.log("No winner!")
#include <stdio.h> #define size 3 int main(){ char board[size][size]; int i, j; int numK, numB; char winner = 'N'; for(i=0;i<size;i++){ for(j=0;j<size;j++){ scanf("%c",&board[i][j]); getchar(); } } //检查行 for(i=0;i<size && 'N' == winner;i++){ // &&winner == N表示每行检查完没有赢才能继续检查下一行 numK = 0; numB = 0; // 每次检查行前,重置为0 for(j=0;j<size;j++){ if('K' == board[i][j]){ numK++; } else if('B' == board[i][j]){ numB++; } } //每行结束后检查K和B各自的数量,如果有一方为3,就表明胜利 if(size == numK){ winner = 'K'; } else if (size == numB){ winner = 'B'; } } //如果检查行没有胜利,就检查列 if('N' == winner){ for(j=0;j<size && 'N' == winner;j++){ numK = 0; numB = 0; for(i=0;i<size;i++){ if('K' == board[i][j]){ numK++; } else if('B' == board[i][j]){ numB++; } } //每列结束后检查K和B各自的数量 if(size == numK){ winner = 'K'; } else if (size == numB){ winner = 'B'; } } } //如果没有赢家,检查顺对角线 if('N' == winner){ numK = 0; numB = 0; for(i=0;i<size;i++){ if('K'==board[i][i]){ numK++; } else if('B'==board[i][i]){ numB++; } } //判断赢家 if(size == numK){ winner = 'K'; } else if (size == numB){ winner = 'B'; } } //如果没有赢家,检查反对角线 if('N'==winner){ numK = 0; numB = 0; for(i=0;i<size;i++){ if('K'==board[i][size-1-i]){ numK++; } else if('B'==board[i][size-1-i]){ numB++; } } //判断赢家 if(size == numK ){ winner = 'K'; } else if (size == numB ){ winner = 'B'; } } //输出结果 if('K'==winner){ printf("KiKi wins!"); } else if('B'==winner){ printf("BoBo wins!"); } else { printf("No winner!"); } return 0; }分行列对角四种情况,逐一判断。
#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; }
#include <stdio.h> int main() { char chess[3][3]; int i, j; for(i = 0; i < 3; i++) for(j = 0; j < 3; j++) { chess[i][j] = getchar(); getchar(); } char tag = 'O'; for(i = 0; i < 3; i++) { if(chess[i][0] == chess[i][1] && chess[i][1] == chess[i][2]) { tag = chess[i][0]; break; } if(chess[0][i] == chess[1][i] && chess[1][i] == chess[2][i]) { tag = chess[0][i]; break; } } if(chess[0][0] == chess[1][1] && chess[1][1] == chess[2][2]) tag = chess[0][0]; if(chess[0][2] == chess[1][1] && chess[1][1] == chess[2][0]) tag = chess[1][1]; if(tag == 'K') printf("KiKi wins!\n"); else if(tag == 'B') printf("BoBo wins!\n"); else printf("No winner!\n"); }
l = [] for _ in range(3): l.append(input().split(' ')) win = 0 for i in range(3): if l[i] == ['K', 'K', 'K']: print('KiKi wins!') win = 1 break if l[i] == ['B', 'B', 'B']: print('BoBo wins!') win = 1 break for i in range(3): if l[0][i]=='K' and l[1][i]=='K' and l[2][i]=='K': print('KiKi wins!') win = 1 break if l[0][i]=='B' and l[1][i]=='B' and l[2][i]=='B': print('BoBo wins!') win = 1 break if l[0][0]=='K' and l[1][1]=='K' and l[2][2]=='K': print('KiKi wins!') win = 1 if l[0][0]=='B' and l[1][1]=='B' and l[2][2]=='B': print('BoBo wins!') win = 1 if l[0][2]=='K' and l[1][1]=='K' and l[2][0]=='K': print('KiKi wins!') win = 1 if l[0][2]=='B' and l[1][1]=='B' and l[2][0]=='B': print('BoBo wins!') win = 1 if win==0: print('No winner!')我还以为有什么聪明取巧的方法呢,没想到大家都一样哈哈哈,简单粗暴
#include <stdio.h> int main () { char arr[3][3] = {0}; int i = 0, j = 0; for(i=0; i<3; i++) { for(j=0; j<3;j++) { scanf(" %c", &arr[i][j]); //%c前面加空格,后面就不用加getchar() } } char flag = 'O'; for(i=0; i<3; i++) { if(arr[i][0] == arr[i][1] && arr[i][1] == arr[i][2]) //判断行是否一样,要是前面就相同那可以直接break,后面可以不用再判断了 { flag = arr[i][1]; break; } else if(arr[0][i] == arr[1][i] && arr[1][i] == arr[2][i]) //判断列是否一样,要是前面就相同那可以直接break,后面可以不用再判断了 { flag = arr[1][i]; break; } } if((arr[0][0] == arr[1][1] && arr[1][1] == arr[2][2]) || (arr[0][2] == arr[1][1] && arr[1][1] == arr[2][0])) //判断两斜边是否一样 { flag = arr[1][1]; } //前面判断有一条成立的话,那么flag的值就是'K'或者'B' if(flag == 'K') printf("KiKi wins!\n"); else if(flag == 'B') printf("BoBo wins!\n"); else printf("No winner!\n"); return 0; }
#include <stdio.h> int main() { char arr[3][3] = {0}; int i = 0; int j = 0; char flag = 'c'; for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { scanf("%c", &arr[i][j]); getchar(); } } for (i = 0; i < 3; i++) { if (arr[i][0] == arr[i][1] && arr[i][1] == arr[i][2]) { flag = arr[i][1]; break; } if (arr[0][i] == arr[1][i] && arr[1][i] == arr[2][i]) { flag = arr[1][i]; break; } } if (arr[0][0] == arr[1][1] && arr[1][1] == arr[2][2]) { flag = arr[1][1]; } if (arr[0][2] == arr[1][1] && arr[1][1] == arr[2][0]) { flag = arr[1][1]; } if (flag == 'K') printf("KiKi wins!"); else if (flag == 'B') printf("BoBo wins!"); else printf("No winner!"); return 0; }