| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
数量,一个赢家,平局时棋盘已满。五子棋的话还要判断赢的方式是不是只有一种#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int way[8][3] = {
//horizonal
{0, 1, 2},
{3, 4, 5},
{6, 7, 8},
//vertical
{0, 3, 6},
{1, 4, 7},
{2, 5, 8},
//diagonal
{0, 4, 8},
{2, 4, 6}
};
char s[10];
bool check(char c)
{
int i, j;
for(i = 0; i < 8; ++i){
for(j = 0; j < 3; ++j){
if(s[way[i][j]] != c) break;
}
if(j == 3) return true;
}
return false;
}
int main()
{
int x, o;
while(strcmp(gets(s), "end")){
x = count(s, s + 9, 'X');
o = count(s, s + 9, 'O');
if(x < o || o+1 < x || x < 3) puts("invalid");//invalid count
else if(x > o && check('X') && !check('O')) puts("valid");//x win
else if(x == o && check('O') && !check('X')) puts("valid");//o win
else if(x + o == 9 && !check('X') && !check('O')) puts("valid");//draw
else puts("invalid");
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator