中国将帅象棋问题
2015-08-11 09:59
141 查看
#include <stdio.h> #define HALF_BITS_LENGTH 4 #define FULLMASK 255 // 1111 1111 #define LMASK (FULLMASK << HALF_BITS_LENGTH) // 1111 0000 #define RMASK (FULLMASK >> HALF_BITS_LENGTH) //0000 1111 // 低四位置为 n 的低四位 #define RSET(b, n) (b = ((LMASK & b) | (n))) // 高四位置为 n 的高四位 #define LSET(b, n) (b = ((RMASK & b) | ( n << HALF_BITS_LENGTH))) // 获得 b 的低四位,输出时候为8位的char,高四位为0 #define RGET(b) (RMASK & b) // 获得 b 的高四位, 输出时候为8位的char,高四位为0 #define LGET(b) ((LMASK & b) >> HALF_BITS_LENGTH) #define GRIDW 3 int main() { unsigned char b; for(LSET(b, 1); LGET(b) <= GRIDW * GRIDW; LSET(b, (LGET(b) + 1))) { for(RSET(b, 1) ; RGET(b) <= GRIDW * GRIDW; RSET(b, (RGET(b) + 1))) { if(LGET(b) % GRIDW != RGET(b) % GRIDW) printf("A = %d, B = %d\n", LGET(b), RGET(b)); } } return 0; }
注:
初次接触这么多宏定义。
对于c 的移位操作能够有更深入的理解。
输出:
A = 1, B = 2 A = 1, B = 3 A = 1, B = 5 A = 1, B = 6 A = 1, B = 8 A = 1, B = 9 A = 2, B = 1 A = 2, B = 3 A = 2, B = 4 A = 2, B = 6 A = 2, B = 7 A = 2, B = 9 A = 3, B = 1 A = 3, B = 2 A = 3, B = 4 A = 3, B = 5 A = 3, B = 7 A = 3, B = 8 A = 4, B = 2 A = 4, B = 3 A = 4, B = 5 A = 4, B = 6 A = 4, B = 8 A = 4, B = 9 A = 5, B = 1 A = 5, B = 3 A = 5, B = 4 A = 5, B = 6 A = 5, B = 7 A = 5, B = 9 A = 6, B = 1 A = 6, B = 2 A = 6, B = 4 A = 6, B = 5 A = 6, B = 7 A = 6, B = 8 A = 7, B = 2 A = 7, B = 3 A = 7, B = 5 A = 7, B = 6 A = 7, B = 8 A = 7, B = 9 A = 8, B = 1 A = 8, B = 3 A = 8, B = 4 A = 8, B = 6 A = 8, B = 7 A = 8, B = 9 A = 9, B = 1 A = 9, B = 2 A = 9, B = 4 A = 9, B = 5 A = 9, B = 7 A = 9, B = 8
相关文章推荐
- Oracle 12C -- truncate的级联操作
- leetcode 122 —— Best Time to Buy and Sell Stock II
- HDU-2234 无题I(IDA*)
- LINQ体验(6)——LINQ to SQL语句之Join和Order By
- 【水题】hdu2013 蟠桃记
- go-goroutine中的共享变量
- android下拉刷新和上拉加载更多的框架pulltoreflesh
- equals 和 hashCode 的重写方法
- Servlet+jsp+javabean+连接数据库
- LINQ体验(7)——LINQ to SQL语句之Group By/Having和Exists/In/Any/All/Contains
- 投资人教你怎么写能拿到钱的商业计划书
- Android 应用层知识纲要
- Mac下打开多个Eclipse
- Catalan数——卡特兰数
- sublime aligment插件异常 不能修改快捷键
- Eclipse看GBK文件
- 静态库和动态库
- 安装两个tomcat的配置
- HDU 1233:还是畅通工程【最小生成树】
- 图片缓存之内存缓存技术LruCache,软引用