列表

详情


BC141. 井字棋

描述

KiKiBoBo玩 “井”字棋。也就是在九宫格中,只要任意行、列,或者任意对角线上面出现三个连续相同的棋子,就能获胜。请根据棋盘状态,判断当前输赢。

输入描述

三行三列的字符元素,代表棋盘状态,字符元素用空格分开,代表当前棋盘,其中元素为K代表KiKi玩家的棋子,为O表示没有棋子,为B代表BoBo玩家的棋子。

输出描述

如果KiKi获胜,输出“KiKi wins!”;
如果BoBo获胜,输出“BoBo wins!”;
如果没有获胜,输出“No winner!”。

示例1

输入:

K O B
O K B
B O K

输出:

KiKi wins!

原站题解

C 解法, 执行用时: 1ms, 内存消耗: 308KB, 提交时间: 2021-09-13

#include<stdio.h>
int main(){
    char m[3][3];
    for(int i=0;i<3;i++){
        for(int j=0;j<3;j++){
            scanf("%c ",&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;
        }
    }
    printf("No winner!\n");
    return 0;
    K:
    printf("KiKi wins!\n");
    return 0;
    B:
    printf("BoBo wins!\n");
    return 0;
}

C 解法, 执行用时: 1ms, 内存消耗: 308KB, 提交时间: 2021-07-31

#include<stdio.h>
int main()
{
    char arr[3][3];
    for(int i = 0; i < 3; i++)
    {
        for(int j = 0; j < 3; j++)
        {
            scanf(" %c",&arr[i][j]);
        }
    }
    for(int i = 0; i < 3; i++)
    {
        if(arr[i][0]==arr[i][1]&&arr[i][0]==arr[i][2])
        {
            if(arr[i][0]=='K')
            {
                printf("KiKi wins!");
                return 0;
            }
            else if(arr[i][0]=='B')
            {
                printf("BoBo wins!");
                return 0;
            }
        }
    }
    for(int j = 0; j < 3; j++)
    {
        if(arr[0][j]==arr[1][j]&&arr[0][j]==arr[2][j])
        {
            if(arr[0][j]=='K')
            {
                printf("KiKi wins!");
                return 0;
            }
            else if(arr[0][j]=='B')
            {
                printf("BoBo wins!");
                return 0;
            }
        }
    }
    if(arr[0][0]==arr[1][1]&&arr[0][0]==arr[2][2])
    {
        if(arr[0][0]=='K')
            {
                printf("KiKi wins!");
                return 0;
            }
            else if(arr[0][0]=='B')
            {
                printf("BoBo wins!");
                return 0;
            }
    }
     if(arr[0][2]==arr[1][1]&&arr[0][2]==arr[2][0])
    {
        if(arr[0][2]=='K')
            {
                printf("KiKi wins!");
                return 0;
            }
            else if(arr[0][2]=='B')
            {
                printf("BoBo wins!");
                return 0;
            }
    }
    printf("No winner!");
    
}

C 解法, 执行用时: 1ms, 内存消耗: 324KB, 提交时间: 2021-07-31

#include <stdio.h>

int main()
{
    char arr[3][3];
    int i, j;
    int flag = 0;
    
    for(i = 0; i < 3; i++)
    {
        for(j = 0; j < 3; j++)
        {
            arr[i][j] = getchar();
            getchar();
        }
    }
    
    for(i = 0; i < 3; i++)
    {
        if(arr[i][0] == 'K' && arr[i][1] == 'K' && arr[i][2] == 'K')
        {
            flag = 1;
            break;
        }
    }
    
    for(i = 0; i < 3; i++)
    {
        if(arr[0][i] == 'K' && arr[1][i] == 'K' && arr[2][i] == 'K')
        {
            flag = 1;
            break;
        }
    }
    
    if(arr[0][0] == 'K' && arr[1][1] == 'K' && arr[2][2] == 'K')
        flag = 1;
    if(arr[0][2] == 'K' && arr[1][1] == 'K' && arr[2][0] == 'K')
        flag = 1;
    
    for(i = 0; i < 3; i++)
    {
        if(arr[i][0] == 'B' && arr[i][1] == 'B' && arr[i][2] == 'B')
        {
            flag = -1;
            break;
        }
    }
    
    for(i = 0; i < 3; i++)
    {
        if(arr[0][i] == 'B' && arr[1][i] == 'B' && arr[2][i] == 'B')
        {
            flag = -1;
            break;
        }
    }
    
    if(arr[0][0] == 'B' && arr[1][1] == 'B' && arr[2][2] == 'B')
        flag = -1;
    if(arr[0][2] == 'B' && arr[1][1] == 'B' && arr[2][0] == 'B')
        flag = -1;
    
    if(flag == 1)
        printf("KiKi wins!\n");
    else if(flag == 0)
        printf("No winner!\n");
    else
        printf("BoBo wins!\n");
    return 0;
}

C 解法, 执行用时: 1ms, 内存消耗: 328KB, 提交时间: 2021-07-27

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

C 解法, 执行用时: 1ms, 内存消耗: 336KB, 提交时间: 2021-08-31

#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");
    }
    return 0;
}

上一题