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;
}