洛谷三子棋
题目描述小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;
}