《编程之美》中国象棋将帅问题
来源:互联网 发布:oracle默认数据库 编辑:程序博客网 时间:2024/05/16 05:00
问题描述
中国象棋里面双方的“将”和“帅”各自呆在自己的九宫格里,一步只能横移或纵移一格,而且双方不能见面(既不能处在同一条纵线上)。在残局时有的人会用这一规则走出绝妙杀招。假设一方的“将”为A,另一方的“帅”为B,现在求双方所能出现的所有合法位置,所需变量只能用一个字节来保存。
我的解法
#include <stdio.h>int main(void){unsigned char chPos = 0x11;for ( ; (chPos & 0x0f) <= 9 ; chPos += 0x01) {for ( ; (chPos >> 4) <= 9 ; chPos += 0x10) {if (((chPos & 0x0f) - 1) % 3 == (((chPos >> 4) - 1) % 3)) continue;printf ("B = (%c , %d) A = (%c , %d)\n" ,'d' + ((chPos & 0x0f) - 1) % 3 , 1 + ((chPos & 0x0f) - 1) / 3 ,'d' + ((chPos >> 4) - 1) % 3 , 8 + ((chPos >> 4) - 1 ) / 3 );}chPos &= 0x0F;chPos |= 0x10 ;}return 0;}
只要一个字节,将帅只能在9个点移动,所以前四个位表示将、后四位表示帅的位置(1~9),那么余3是列号,除3是行号,只要保证列号不同即可。
0 0
- <<编程之美>>之中国象棋将帅问题
- 编程之美之中国象棋将帅问题
- 编程之美之中国象棋将帅问题
- 编程之美 - 中国象棋将帅问题
- 编程之美 - 读书笔记 - 中国象棋将帅问题
- 编程之美:中国象棋将帅问题
- 微软编程之美--中国象棋将帅问题
- 编程之美-中国象棋将帅问题
- 编程之美_002中国象棋将帅问题
- 编程之美-中国象棋将帅问题
- 编程之美---中国象棋将帅问题
- 编程之美二 : 中国象棋将帅问题
- 编程之美 -- 中国象棋将帅问题
- 编程之美 1.2 中国象棋将帅问题
- 编程之美1.2 中国象棋将帅问题
- 编程之美-中国象棋将帅问题
- 编程之美 1.2 中国象棋将帅问题
- 编程之美:中国象棋将帅问题
- 日语学习之沪江N4基础 20141130 -3
- 【JNI】JNI中java类型的简写
- linux socketcan驱动编写及使用(研华PCI-1680)
- Windows优化大师使用技巧
- 数据库知识点总结(1)
- 《编程之美》中国象棋将帅问题
- redhat6.0配置163的yum
- Linux flock 文件锁
- 树莓派使用百度云盘自动上传存储监控照片
- 两部android设备通过服务器转发实现通信简单demo
- Junit4中的新断言assertThat的是用方法
- 为什么要使用Python?
- C语言中的浮点数比较
- 数据结构——线性表