原题链接:
http://codeforces.com/problemset/problem/3/C
题意:
题很简单,就是给你一个井字棋的一个棋局,让你判断一下(1)谁输谁赢(2)接下来谁下(3)棋局不符合要求(4)平局
之所以写这个博客就是一位(3)的情况有些多;
1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<cmath> 5 #include<algorithm> 6 7 using namespace std; 8 9 int main() 10 { 11 char a[3][3]; 12 int i,j,cro=0,nou=0,fg1=0,fg2=0; 13 for(i=0;i<3;i++) 14 { 15 for(j=0;j<3;j++) 16 { 17 scanf("%c",&a[i][j]); 18 if(a[i][j]=='X') 19 cro++; 20 if(a[i][j]=='0') 21 nou++; 22 } 23 getchar(); 24 } 25 if(cro<nou||cro-nou>=2) //先手的步数要么比后手多一步,要么相等;其他的都是非法的 26 printf("illegal "); 27 else 28 { 29 30 if(a[0][0]==a[1][0]&&a[1][0]==a[2][0]&&a[0][0]!='.') //下面八个判断是判断那个玩家能三点一线 分别记录 31 { 32 if(a[0][0]=='X') 33 fg1=1; 34 else 35 fg2=1; 36 } 37 if(a[0][1]==a[1][1]&&a[1][1]==a[2][1]&&a[0][1]!='.') 38 { 39 if(a[0][1]=='X') 40 fg1=1; 41 else 42 fg2=1; 43 } 44 if(a[0][2]==a[1][2]&&a[1][2]==a[2][2]&&a[0][2]!='.') 45 { 46 if(a[0][2]=='X') 47 fg1=1; 48 else 49 fg2=1; 50 } 51 if(a[0][0]==a[0][1]&a[0][1]==a[0][2]&&a[0][0]!='.') 52 { 53 if(a[0][0]=='X') 54 fg1=1; 55 else 56 fg2=1; 57 } 58 if(a[1][0]==a[1][1]&a[1][1]==a[1][2]&&a[1][0]!='.') 59 { 60 if(a[1][0]=='X') 61 fg1=1; 62 else 63 fg2=1; 64 } 65 if(a[2][0]==a[2][1]&a[2][1]==a[2][2]&&a[2][0]!='.') 66 { 67 if(a[2][0]=='X') 68 fg1=1; 69 else 70 fg2=1; 71 } 72 if(a[0][0]==a[1][1]&&a[1][1]==a[2][2]&&a[0][0]!='.') 73 { 74 if(a[0][0]=='X') 75 fg1=1; 76 else 77 fg2=1; 78 } 79 if(a[0][2]==a[1][1]&&a[1][1]==a[2][0]&&a[0][2]!='.') 80 { 81 if(a[0][2]=='X') 82 fg1=1; 83 else 84 fg2=1; 85 } 86 if(fg1&&fg2) //不能两个人都能三点一线,也就是说有一人三点一线 游戏就结束 87 { 88 printf("illegal "); 89 } 90 else if(fg1&&!fg2) 91 { 92 if(cro==nou) 93 printf("illegal "); 94 else 95 printf("the first player won "); 96 } 97 else if(fg2&&!fg1) 98 { 99 if(cro>nou) 100 printf("illegal "); 101 else 102 printf("the second player won "); 103 } 104 else if(!fg1&&!fg2) //没有人三点一线 105 { 106 if(cro+nou==9) //九个格子都用完了 平局 107 printf("draw "); 108 else //棋没下完,判断接下来谁下 109 { 110 if(cro>nou) 111 printf("second "); 112 else if(cro==nou) 113 printf("first "); 114 } 115 } 116 117 } 118 119 return 0; 120 }
----------------欢迎指点评论------------------