五子棋
来源:互联网 发布:淘宝商品评价没有了 编辑:程序博客网 时间:2024/04/29 21:26
#include <iostream>using namespace std;const int maxR=12;const int maxC=12;char s[maxR][maxC];int n,m;const int fx[8][2]={1,0,-1,0,0,1,0,-1,1,1,-1,-1,-1,1,1,-1};bool ncj(int x,int y){ return x>=0&&y>=0&&x<n&&y<m;}bool ok(int x,int y,char ch){ int xx,yy,i,j,num; for( i=0; i<8; i+=2) { num=1; xx=x+fx[i][0],yy=y+fx[i][1]; while(ncj(xx,yy)&&s[xx][yy]==ch) { xx+=fx[i][0]; yy+=fx[i][1]; ++num; } if(num>=5)return 1; xx=x+fx[i+1][0],yy=y+fx[i+1][1]; while(ncj(xx,yy)&&s[xx][yy]==ch) { xx+=fx[i+1][0]; yy+=fx[i+1][1]; ++num; } if(num>=5)return 1; } return 0;}bool Win(char ch){ int i,j; for( i=0; i<n; ++i) { for( j=0; j<m; ++j) if(s[i][j]==' ') { if(ok(i,j,ch))return 1; } } return 0;}bool judge1(){ bool flag=0; for(int i=0;i<n;++i) for(int j=0;j<m;++j) if(s[i][j]==' '){ flag=1; if(Win('0')==true) return false; s[i][j]='0'; if(Win('1')==false){ s[i][j]=' '; return false; } s[i][j]=' '; } return flag;}bool judge(){ for(int i=0;i<n;++i) for(int j=0;j<m;++j) if(s[i][j]==' '){ if(Win('1')==true){ return true; } s[i][j]='1'; if(judge1()) return true; s[i][j]=' '; } return false; }int main(){ while(scanf("%d%d",&n,&m)==2){ bool ok; getchar(); for(int i=0; i<n; ++i) gets(s[i]); ok=judge(); if(ok==true) puts("YES"); else puts("NO"); } }
0 0
- 五子棋
- 五子棋
- 五子棋
- 五子棋
- 五子棋
- 五子棋
- 五子棋
- 五子棋
- 五子棋
- 五子棋
- 五子棋
- 五子棋
- 五子棋
- 五子棋
- 五子棋
- 五子棋
- 五子棋
- 五子棋
- java学习注意事项:java类集迭代器的next()问题
- 读《富兰克林传》
- 【一个操作系统的实现】练习-第1天
- 卡尔曼滤波的原理说明
- 黑马程序员_75_IO流
- 五子棋
- MERGE INTO 的使用
- 泛型与类型擦除
- 使用ObjectAnimator或者ValueAnimator来为控件使用动画
- 基于Camu的曝光多边形动画实现
- cocos2d-x Physics 学习笔记(二)
- AngularJS——Filter (2)
- ListView Scroll: 动态加载列表内容
- android开发环境的搭建