《编程之美》学习笔记 1.2中国象棋将帅问题
2013-08-22 12:27
274 查看
这个问题并不难,这篇博文主要对书上的代码进行详细分析。
对于第二段代码,如下所示
将将帅的位置和变量“i”的对应关系列出来,如下图所示,可以发现规律
![](https://img-blog.csdn.net/20130822120945234?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVhbmdqdWVnZWVr/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
对于“i”的每次迭代(81...1),(i-1)/9+1表示“将”的位置,(i-1)%9+1表示“帅”的位置,通过对这两个位置分别进行“模3”运算后,比较二者是否相等来判断,若不相等,则该位置符合要求,输出相应的位置。
对于第三段代码,其思想跟第一段写了一堆宏定义的代码类似,如下所示
对于第二段代码,如下所示
#include<iostream> using namespace std; int main() { char i=81; // int count=0; while(i--) { if((i/9+1)%3 == (i%9+1)%3){ continue; } cout<<"A="<<i/9+1<<", B="<<i%9+1<<endl; // count++; } // cout<<count<<endl; return 0; }其中,“81”表示对于“将”和“帅”,他们各自分别有9个位置,因此共有9x9=81种不同的位置组合。
将将帅的位置和变量“i”的对应关系列出来,如下图所示,可以发现规律
对于“i”的每次迭代(81...1),(i-1)/9+1表示“将”的位置,(i-1)%9+1表示“帅”的位置,通过对这两个位置分别进行“模3”运算后,比较二者是否相等来判断,若不相等,则该位置符合要求,输出相应的位置。
对于第三段代码,其思想跟第一段写了一堆宏定义的代码类似,如下所示
#include<stdio.h> struct{ unsigned char a:4; unsigned char b:4; } i; int main() { //int count=0; for(i.a=1;i.a<=9;i.a++){ for(i.b=1;i.b<=9;i.b++){ if(i.a%3 != i.b%3){ printf("A=%d, B=%d\n", i.a, i.b); //count++; } } } //printf("%d\n",count ); return 0; }
相关文章推荐
- 《编程之美》1.2 中国象棋将帅问题 学习笔记
- 《编程之美》学习笔记 中国象棋将帅问题
- 《编程之美》的笔记-1.2 中国象棋将帅问题
- 编程之美1.2 中国象棋将帅问题
- 《编程之美》 1.2 中国象棋将帅问题
- 编程之美1.2 | 中国象棋将帅问题
- 编程之美之1.2 中国象棋将帅问题
- 编程之美——1.2中国象棋将帅问题
- 《编程之美》读书笔记01: 1.2中国象棋将帅问题
- 编程之美1.2中国象棋将帅问题
- 《编程之美》:1.2—中国象棋将帅问题
- 《编程之美》之读书笔记 1.2中国象棋将帅问题
- 编程之美-1.2中国象棋将帅问题
- 编程之美:第一章 1.2 中国象棋将帅问题
- 编程之美1.2中国象棋将帅问题——转载+自己的一点理解
- 《编程之美》读书笔记01: 1.2中国象棋将帅问题
- 编程之美——1.2 中国象棋将帅问题
- 读书笔记--《编程之美》--中国象棋将帅问题
- 《编程之美》读书笔记(一):中国象棋将帅问题
- 《编程之美》读书笔记 -- 1.2中国象棋问题