Codeforces Beta Round #3 C. Tic-tac-toe
来源:互联网 发布:依爱消防主机怎么编程 编辑:程序博客网 时间:2024/06/08 17:57
井字棋 ,这个模拟也是醉了
题目大意:
给出一个井字棋棋局,判断他是不是合法的。若合法且出现某人赢是谁赢了,没出现某人赢是下一步该谁下,还是平局。
解题思路:
分类讨论,就是模拟啊 恶心死~~
下面是(又臭又长的)代码:
#include <set>#include <map>#include <queue>#include <math.h>#include <vector>#include <string>#include <stdio.h>#include <string.h>#include <stdlib.h>#include <iostream>#include <cctype>#include <algorithm>#define eps 1e-10#define pi acos(-1.0)#define inf 107374182#define inf64 1152921504606846976#define lc l,m,tr<<1#define rc m + 1,r,tr<<1|1#define zero(a) fabs(a)<eps#define iabs(x) ((x) > 0 ? (x) : -(x))#define clear1(A, X, SIZE) memset(A, X, sizeof(A[0]) * (min(SIZE,sizeof(A))))#define clearall(A, X) memset(A, X, sizeof(A))#define memcopy1(A , X, SIZE) memcpy(A , X ,sizeof(X[0])*(SIZE))#define memcopyall(A, X) memcpy(A , X ,sizeof(X))#define max( x, y ) ( ((x) > (y)) ? (x) : (y) )#define min( x, y ) ( ((x) < (y)) ? (x) : (y) )using namespace std;char s[5][5];char judge(){ char ans=0; if(s[0][0]==s[0][1]&&s[0][0]==s[0][2]&&s[0][0]!='.') { if(ans==0||ans==s[0][0]) ans=s[0][0]; else return 1; } if(s[1][0]==s[1][1]&&s[1][0]==s[1][2]&&s[1][0]!='.') { if(ans==0||ans==s[1][0]) ans=s[1][0]; else return 1; } if(s[2][0]==s[2][1]&&s[2][0]==s[2][2]&&s[2][0]!='.') { if(ans==0||ans==s[2][0]) ans=s[2][0]; else return 1; } if(s[0][0]==s[1][0]&&s[0][0]==s[2][0]&&s[0][0]!='.') { if(ans==0||ans==s[0][0]) ans=s[0][0]; else return 1; } if(s[0][1]==s[1][1]&&s[0][1]==s[2][1]&&s[0][1]!='.') { if(ans==0||ans==s[0][1]) ans=s[0][1]; else return 1; } if(s[0][2]==s[1][2]&&s[0][2]==s[2][2]&&s[0][2]!='.') { if(ans==0||ans==s[0][2]) ans=s[0][2]; else return 1; } if(s[0][0]==s[1][1]&&s[0][0]==s[2][2]&&s[0][0]!='.') { if(ans==0||ans==s[0][0]) ans=s[0][0]; else return 1; } if(s[0][2]==s[1][1]&&s[0][2]==s[2][0]&&s[0][2]!='.') { if(ans==0||ans==s[0][2]) ans=s[0][2]; else return 1; } if(ans==0) return '.'; else return ans;}int main(){ int cnt1=0,cnt2=0; for(int i=0; i<3; i++) { scanf("%s",s[i]); for(int j=0; j<3; j++) { if(s[i][j]=='X') { cnt1++; } else if(s[i][j]=='0') { cnt2++; } } } if(cnt1-cnt2<0||cnt1-cnt2>1) { puts("illegal"); return 0; } char ans=judge(); if(ans=='X') { if(cnt1>cnt2) puts("the first player won"); else puts("illegal"); return 0; } else if(ans=='0') { if(cnt1==cnt2) puts("the second player won"); else puts("illegal"); return 0; } else if(ans==1) { puts("illegal"); return 0; } if(cnt1+cnt2==9) { puts("draw"); return 0; } else { if(cnt1==cnt2) { puts("first"); return 0; } else { puts("second"); return 0; } } return 0;}
0 0
- Codeforces Beta Round #3C. Tic-tac-toe
- Codeforces Beta Round #3 C. Tic-tac-toe
- Codeforces Beta Round #3-C. Tic-tac-toe
- Codeforces Beta Round #3 / 3C Tic-tac-toe (超级模拟)
- codeforces 3C. Tic-tac-toe
- codeforces 3C Tic-tac-toe
- Codeforces 3C. Tic-tac-toe
- Codeforces 3 C. Tic-tac-toe
- CodeForces 3C-Tic-tac-toe
- Codeforces 3C Tic-tac-toe
- [Codeforces]C. Tic-tac-toe
- codeforces 3C Tic-tac-toe (想法题)
- CodeForces 3C Tic-tac-toe 井字棋盘游戏
- CodeForces 3C---Tic-tac-toe--思维题
- codeforces - 3C - Tic-tac-toe(模拟)
- CodeForces 3C Tic-tac-toe(模拟)
- C - Tic-tac-toe
- CF 3C Tic-tac-toe
- Cocos2dx技术(一)——cocos2dx初窥
- Qt5信号和槽机制
- 拓扑(Topology)----改编自百度百科
- 将数据从文件中读出来放入list中
- Android应用开发基础篇(10)-----Menu(菜单)
- Codeforces Beta Round #3 C. Tic-tac-toe
- Quick Cosos2Dx技术(一)——修改helloWord
- nyoj 236心急的C小加(贪心)
- 解决Eclipse中文乱码
- Fedora 20 Compile Cyanogenmod 11.0 - Nexus 4 ( mako ) example
- Quick Cosos2Dx技术(二)——利用TexturePacker制作图片资源
- WCDMA网络手机开机流程
- JavaScript程序员必备的5个debug技巧
- Serializable 和 Parcelable 区别