中国象棋将帅问题
来源:互联网 发布:苹果手机打开4g网络 编辑:程序博客网 时间:2024/05/16 04:56
在《编程之美》中,作者给出了三种解法,我的解法与那三种解法相比没有性能优点,唯一的优点在于利用了十六进制的特殊性,使结果打印不需要进行转换,可以直接对应棋盘上的位置。
/* * 棋盘参见《编程之美》1.2节,将帅和将的所有可能出现的位置打印出来 * 要求: 只用一个字节存储变量 * StoryMonster 2016/7/15 */#include <stdio.h>int main(){ //我使用16进制数的字面意思表示实际位置 //0xd1表示第d列第1行,0xfa表示第f列第10行 unsigned char Apos = 0xda; while(true) { while((Apos&0x0f)>=0x08) { if((Apos&0xf0) == 0xd0) { printf("A:%x B:%x\n",Apos,((Apos+0x10)&0xf0)+1); printf("A:%x B:%x\n",Apos,((Apos+0x20)&0xf0)+1); printf("A:%x B:%x\n",Apos,((Apos+0x10)&0xf0)+2); printf("A:%x B:%x\n",Apos,((Apos+0x20)&0xf0)+2); printf("A:%x B:%x\n",Apos,((Apos+0x10)&0xf0)+3); printf("A:%x B:%x\n",Apos,((Apos+0x20)&0xf0)+3); } else if((Apos&0xf0) == 0xe0) { printf("A:%x B:%x\n",Apos,((Apos+0x10)&0xf0)+1); printf("A:%x B:%x\n",Apos,((Apos-0x10)&0xf0)+1); printf("A:%x B:%x\n",Apos,((Apos+0x10)&0xf0)+2); printf("A:%x B:%x\n",Apos,((Apos-0x10)&0xf0)+2); printf("A:%x B:%x\n",Apos,((Apos+0x10)&0xf0)+3); printf("A:%x B:%x\n",Apos,((Apos-0x10)&0xf0)+3); } else { printf("A:%x B:%x\n",Apos,((Apos-0x10)&0xf0)+1); printf("A:%x B:%x\n",Apos,((Apos-0x20)&0xf0)+1); printf("A:%x B:%x\n",Apos,((Apos-0x10)&0xf0)+2); printf("A:%x B:%x\n",Apos,((Apos-0x20)&0xf0)+2); printf("A:%x B:%x\n",Apos,((Apos-0x10)&0xf0)+3); printf("A:%x B:%x\n",Apos,((Apos-0x20)&0xf0)+3); } Apos--; } if(Apos == 0xf7) break; Apos &= 0xf0; Apos += 0x10; Apos += 0x0a; } return 0;}
0 0
- 中国象棋将帅问题
- 中国象棋将帅问题
- 中国象棋将帅问题
- 中国象棋将帅问题
- 中国象棋将帅问题
- 中国象棋将帅问题
- 中国象棋将帅问题
- 中国象棋将帅问题
- 1.中国象棋将帅问题
- 中国象棋的将帅问题
- 中国象棋之将帅问题
- 中国象棋将帅问题
- 1.2中国象棋将帅问题
- 中国象棋将帅问题
- 中国象棋将帅问题
- 中国象棋将帅问题
- 中国象棋的将帅问题
- 中国象棋将帅问题
- Android学习笔记(三)
- OpenGL---绘制几何图形的一些细节
- 指针
- jsoup处理url
- javaScript数组中的方法1
- 中国象棋将帅问题
- ubuntu下,Android Studio 卡在 Scanning project directories
- 在Android项目中写带main(String args)的Java类测试
- Android图片添加阴影效果的两种方式
- STM32F1学习-GPIO以及八种工作模
- logback和slf4j的使用之logger使用
- 杂记
- Chrome启动页被360劫持
- H5网页播放器