UVa 255 - Correct Move
2015-09-25 08:06
1971 查看
題目:已知國際象棋的王和后的位置和后的下一步移動,判斷狀態和移動的合法性。
分析:簡單題,枚舉,模擬。本題只處理水平數值移動。直接枚舉判斷即可。
可以利用一個狀態圖標記,王能走記1,后能走記2,都能走記3,方便判斷。
說明:單詞打錯╮(╯▽╰)╭。
分析:簡單題,枚舉,模擬。本題只處理水平數值移動。直接枚舉判斷即可。
可以利用一個狀態圖標記,王能走記1,后能走記2,都能走記3,方便判斷。
說明:單詞打錯╮(╯▽╰)╭。
#include <cstring> #include <cstdio> int maps[8][8]; int dxy[4][2] = {0,1,0,-1,-1,0,1,0}; int main() { int n, m, a, b, c, x, y; while (~scanf("%d%d%d",&a,&b,&c)) { if (a == b) printf("Illegal state\n"); else { for (int i = 0; i < 8; ++ i) for (int j = 0; j < 8; ++ j) maps[i][j] = 0; for (int i = 0; i < 4; ++ i) { x = a/8+dxy[i][0]; y = a%8+dxy[i][1]; if (x >= 0 && x < 8 && y >= 0 && y < 8) maps[x][y] += 1; x = b/8+dxy[i][0]; y = b%8+dxy[i][1]; while (x >= 0 && x < 8 && y >= 0 && y < 8 && x*8+y != a) { maps[x][y] += 2; x = x+dxy[i][0]; y = y+dxy[i][1]; } } if (maps[c/8][c%8] < 2) printf("Illegal move\n"); else if (maps[c/8][c%8] == 3) printf("Move not allowed\n"); else if (a == 0 && c == 9 || a == 7 && c == 14 || a == 56 && c == 49 || a == 63 && c == 54) printf("Stop\n"); else printf("Continue\n"); } } return 0; }
相关文章推荐
- 反调试主要方法简述
- Windows 下令 OpenCV 支持 h.264 视频编码的方法
- Programming from the ground up(0)
- wcf 访问控制
- 【JS】手机屏幕旋转判断
- 开发中常用的功能
- 数据预处理(方法介绍)
- 无线网络破解
- 黑马程序员--Java基础学习笔记【重载、数组操作】
- fpga设计思想(二):有限状态机
- 黑马程序员--Java基础学习笔记【二维数组、面向对象】
- 1102. Invert a Binary Tree (25)
- 黑马程序员--Java基础学习笔记【构造器、静态】
- 缩略图
- 面试题2 编程实现单链表删除节点
- 黑马程序员--Java基础学习笔记【继承、多态】
- “花儿日记”项目总结
- “花儿日记”项目总结
- Linux内核学习之路:认识内核版本
- 黑马程序员--Java基础学习笔记【抽象类、接口】