CF 3C Tic-tac-toe
2015-07-09 16:07
417 查看
此题只要考虑全面就可以额
愁死了
愁死了
#include <iostream> #include <cstring> #include <cstdio> using namespace std; char data[5][5]; int _win[2][10];// 行123 列123 \/ int judgement(char c) { int judge = 0; for(int i = 0; i < 3; i ++) { int flag = 1; for(int j = 0; j < 3; j ++) { if(data[i][j] != c) flag = 0; } if(flag) { judge = 1; if(c == 'X') _win[0][i] = 1; if(c == '0') _win[1][i] = 1; } } for(int i = 0; i < 3; i ++) { int flag = 1; for(int j = 0; j < 3; j ++) { if(data[j][i] != c) flag = 0; } if(flag) { judge = 1; if(c == 'X') _win[0][3+i] = 1; if(c == '0') _win[1][3+i] = 1; } } if(data[0][0] == data[1][1] && data[1][1] == data[2][2] && data[0][0] == c)//\/ { judge = 1; if(c == 'X') _win[0][6] = 1; if(c == '0') _win[1][6] = 1; } if(data[0][2] == data[1][1] && data[1][1] == data[2][0] && data[0][2] == c)// / { judge = 1; if(c == 'X') _win[0][7] = 1; if(c == '0') _win[1][7] = 1; } return judge; } int main() { while(cin>>data[0]>>data[1]>>data[2]) { memset(_win,0,sizeof(_win)); int sum1 = 0,sum2 = 0; for(int i = 0; i < 3; i ++) { for(int j = 0; j < 3; j ++) { if(data[i][j] == 'X') sum1 ++; if(data[i][j] == '0') sum2 ++; } } int flag1 = 0,flag2 = 0; flag1 = judgement('X'); flag2 = judgement('0'); if(flag1 && flag2) { cout<<"illegal"<<endl; continue; } else if(!(sum1==sum2)&&!(sum1-sum2 == 1)) { cout<<"illegal"<<endl; continue ; } else if(!flag1 &&!flag2) { if(sum1 == 5 && sum2 == 4) cout<<"draw"<<endl; else if(sum1-sum2 ==1) cout<<"second"<<endl; else if(sum1 == sum2) cout<<"first"<<endl; continue; } else if(flag1 &&!flag2) { int flag = 0; for(int i = 0; i < 3; i ++) { for(int j = 3; j < 6; j ++) { if(_win[0][j] == _win[0][i] &&_win[0][i] == 1) flag = 1; } if(flag) break; } if(_win[0][6] == _win[0][7] &&_win[0][6]==1) flag = 1; if(flag) { cout<<"the first player won"<<endl; continue; } if(sum1 - sum2 == 1) { cout<<"the first player won"<<endl; continue ; } else { cout<<"illegal"<<endl; continue ; } } else if(!flag1 &&flag2) { if(sum2 == sum1) { cout<<"the second player won"<<endl; continue ; } else { cout<<"illegal"<<endl; continue ; } } } return 0; }
相关文章推荐
- Thrift异步IO服务器源码分析
- MyEclipse8.5破解方法
- 持久化数据
- GRE写作必备句型
- Spring学习(18)--- AOP基本概念及特点
- 算法四-kruskal和DJP
- Oracle日期周详解IW
- 8.16
- Unity3D占用内存太大的解决方法
- 谈谈 静坐
- 1015--Hibernate 检索方式--HQL 检索方式
- 安装RAD6.0
- GIS开发常用算法原理分析
- 由浅入深了解Thrift(三)——Thrift server端的几种工作模式分析
- codeforces 339d(线段树)
- java设计模式之工厂模式
- 【转载】Android端手机测试体系
- 进程调度算法模拟程序设计C++
- 阿里内核电话面试
- 8.15