其他分享
首页 > 其他分享> > Team Tic Tac Toe 题解

Team Tic Tac Toe 题解

作者:互联网

题面:

在这里插入图片描述

翻译:

有一些牛在玩一个游戏:
他们把一些字母写在一个3*3的黑板上.
这些奶牛的名字的首字母分别是A…Z
如果黑板上有相同的字母能够连成一行/一列/一斜.那么名字首字母为这个字母的牛获胜.
但是这样的话太难获胜了,所以这个游戏可以允许两个人合作.
如果有两个字母可以组成一行/一列/一斜,那么两头牛合作获胜.

输入:

三行三列的9个字母

输出:

第一行是一个整数,代表能够独自取胜的牛的个数.
第二行是一个整数,代表能够合作取胜的牛有多少对.

题目分析:

这个题目并不难,就是代码量比较大.
同时要注意几个点:

代码:

#include<stdio.h>

char b[9], ans1, ans2;
bool cow[26] ,cows[26][26];

void cmp(char c1, char c2, char c3){
    if(c1 == c2 && c2 == c3 && c3 == c1){
        if(!cow[c1-65]){
            cow[c1-65] = 1;
            ans1++;
        }
    }
    if(c1 == c2 && c1 != c3){
        if(!cows[c1-65][c3-65]){
            cows[c1-65][c3-65] = cows[c3-65][c1-65] = 1;
            ans2++;
        }
    }
    if(c1 == c2 && c1 != c3){
        if(!cows[c1-65][c3-65]){
            cows[c1-65][c3-65] = cows[c3-65][c1-65] = 1;
            ans2++;
        }
    }
    if(c1 == c3 && c1 != c2){
        if(!cows[c1-65][c2-65]){
            cows[c1-65][c2-65] = cows[c2-65][c1-65] = 1;
            ans2++;
        }
    }
    if(c3 == c2 && c1 != c3){
        if(!cows[c1-65][c3-65]){
            cows[c1-65][c3-65] = cows[c3-65][c1-65] = 1;
            ans2++;
        }
    }
}

int main(){
    for(int i = 0; i < 9; i++)  scanf(" %c", b+i);
    ans1 = 0; ans2 = 0;
    cmp(b[0],b[1],b[2]);
    cmp(b[3],b[4],b[5]);
    cmp(b[6],b[7],b[8]);

    cmp(b[0],b[3],b[6]);
    cmp(b[1],b[4],b[7]);
    cmp(b[2],b[5],b[8]);

    cmp(b[0],b[4],b[8]);
    cmp(b[2],b[4],b[6]);

    printf("%d\n%d\n", ans1, ans2);
}

标签:题解,cows,65,Tac,c3,c2,c1,cmp,Toe
来源: https://blog.csdn.net/qq_25807093/article/details/88585107