HPU 1206 Diamond 【水题】
2015-08-25 21:08
357 查看
嗯,这题就交换之后比较,以及交换的两点必须相邻(这里由于之前课程设计写的五子棋中的人机对弈代码,在这里刚好用到,当初想了好几种方法)
(因为英文单词拼错而导致输出错误WA了一次,以后还是要细心。。。)
(因为英文单词拼错而导致输出错误WA了一次,以后还是要细心。。。)
#include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #include<queue> #include<stack> #define INF 0x3f3f3f3f using namespace std; char map[10][10]; int judge(int r,int c) { int i=1,j=1,s=1,t=1; while(r-i>=0&&map[r-i][c]==map[r][c]) i++,s++; i=1; while(r+i<=8&&map[r+i][c]==map[r][c]) i++,s++; if(s>=3) return 1; while(c-j>=0&&map[r][c-j]==map[r][c]) j++,t++; j=1; while(c+j<=8&&map[r][c+j]==map[r][c]) j++,t++; if(t>=3) return 1; return 0; } int main() { int r1,c1,r2,c2; while(~scanf("%s",map[1])) { for(int i=2;i<=8;++i) scanf("%s",map[i]); scanf("%d%d%d%d",&r1,&c1,&r2,&c2); if(sqrt((r1-r2)*(r1-r2)+(c1-c2)*(c1-c2))>1) { printf("Illegal move!\n"); continue; } c1-=1,c2-=1; char tem=map[r1][c1]; map[r1][c1]=map[r2][c2]; map[r2][c2]=tem; //printf("%d %d\n",judge(r1,c1),judge(r2,c2)); if(judge(r1,c1)||judge(r2,c2)) printf("Ok!\n"); else printf("Illegal move!\n"); } return 0; }
相关文章推荐
- ZOJ_1295解题报告
- Building a Space Station
- 数论(GCD) HDOJ 4320 Arcane Numbers 1
- UIlable让字体自适应宽度方法
- Catalan数
- windows中相对路径和绝对路径
- 求下排每个数都是先前上排那十个数在下排出现的次数
- 进职场记(二)-培训
- 编写函数实现n^k,使用递归实现
- Android通过build.gradle配置应用版本等信息
- UI - UIImageView 和页面跳转
- (3)PHP生命周期和Zend引擎
- [ERROR:] [插入失败] code is 9998;desc is 得到唯一对象不唯一exception is null
- 常量指针与指针常量
- CSU 1333: Funny Car Racing(SPFA)13年省赛题
- 操作系统:内存管理
- 让自己习惯C++
- HDU 4005 The war
- 读取Properties配置文件
- base64原理