标题:洛谷三子棋
取消只看楼主
新的一天111
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2023-1-24
结帖率:0
已结贴  问题点数:20 回复次数:0 
洛谷三子棋
题目描述
小a和uim喜欢互相切磋三子棋。三子棋大家都玩过是吗?就是在九宫格里面OOXX(别想歪了),谁连成3个就赢了。

由于小a比较愚蠢,uim总是让他先。

我们用9个数字表示棋盘位置:

123 456 789 所有的棋谱都是已经结束的棋局,要么一方获胜,要么平局。

今天,他们下了一下午的棋,小a为了提高技术,录下了很多棋谱。他想知道,一盘棋结束时,到底是谁赢。

输入格式
一行,一串数字,表示落子的地点。小a总是先下

输出格式
一行,如果小a赢,输出“xiaoa wins.”。如果uim赢,输出“uim wins.”。如果平局,输出“drew.”
这道题的数据有一半过不过去,大家能不能帮我看看问题出在哪,谢谢
这是我的代码:
#include<stdio.h>
int main(){
    int i,j,k,a[20],b[20],flag=0,aa=0,bb=0,c=0,t=0;
    char ab;
    while((ab=getchar())!='\n'){
        flag++;
        if(flag%2==1){//奇数 小a
            a[aa]=ab-'0';
            aa++;//最后aa为数组a的元素个数
        }else{//偶数 uim
            b[bb]=ab-'0';
            bb++;//最后bb为数组b的元素个数
        }
    }
    for(i=0;i<aa;i++){
        for(j=0;j<aa;j++){
            for(k=0;k<aa;k++){
                if(i!=j&&j!=k&&i!=k){
                    if((a[j]==a[i]+3&&a[k]==a[j]+3)||(a[j]==a[i]+1&&a[k]==a[j]+1)||(a[j]==a[i]+4&&a[k]==a[j]+4)||(a[j]==a[i]+2&&a[k]==a[j]+2))  c=1;//竖着的横着的斜着的
                }
            }
        }
    }
    for(i=0;i<bb;i++){
        for(j=0;j<bb;j++){
            for(k=0;k<bb;k++){
                if(i!=j&&j!=k&&i!=k){
                    if((b[j]==b[i]+3&&b[k]==b[j]+3)||(b[j]==b[i]+1&&b[k]==b[j]+1)||(b[j]==b[i]+4&&b[k]==b[j]+4)||(b[j]==b[i]+2&&b[k]==b[j]+2))  t=1;//竖着的横着的斜着的
                }
            }
        }
    }
    if(c==1&&t==0)  printf("xiaoa wins.");
    if(c==0&&t==1)  printf("uim wins.");
    if(c==0&&t==0)  printf("drew.");
    return 0;
}
搜索更多相关主题的帖子: for 元素 || printf 输出 
2023-01-24 17:59



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-511151-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.508352 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved