编程之美——中国象棋将帅问题
2013-07-08 00:45
232 查看
题目要求:中国象棋里的将和帅走在各自的九宫格里,相互不能照面,请写一个程序,输出将和帅的所有位置。要求代码里只能使用一个字节的变量。
这道题要出结果很容易,用1到9表示九宫格的9个位置,如图
然后1到9两重循环判断就行了,判断就是两个位置都对3取模,不相等就是不会照面,但是题目要求只能用一个变量,就有点费劲。分析:将帅各9个位置,总共有81种组合,设置一个变量,从1到81,肯定可以表示这81种组合情况。关键就是找到如何用一个变量分别表示将和帅。从9下手,设变量i从1到81递增,发现i%9这个值是1……9,1……9…… 而i/9则是1……1,2……2,…………,这个步调与两重循环一致,i/9是外循环,i%9是内循环,故可以考虑用这两个分别表示将帅的位置,思路清晰了,细微调整便可写出代码:
结果验证是正确的。
这道题要出结果很容易,用1到9表示九宫格的9个位置,如图
然后1到9两重循环判断就行了,判断就是两个位置都对3取模,不相等就是不会照面,但是题目要求只能用一个变量,就有点费劲。分析:将帅各9个位置,总共有81种组合,设置一个变量,从1到81,肯定可以表示这81种组合情况。关键就是找到如何用一个变量分别表示将和帅。从9下手,设变量i从1到81递增,发现i%9这个值是1……9,1……9…… 而i/9则是1……1,2……2,…………,这个步调与两重循环一致,i/9是外循环,i%9是内循环,故可以考虑用这两个分别表示将帅的位置,思路清晰了,细微调整便可写出代码:
int _tmain(int argc, _TCHAR* argv[]) { for(int i=0;i<81;i++){ if((i/9+1)%3!=(i%9+1)%3){ printf("将%d-帅%d\n",(i/9+1),(i%9+1)); count++; } } return 0; }
结果验证是正确的。
相关文章推荐
- 编程之美——1.2 中国象棋将帅问题
- 编程之美之1.2 中国象棋将帅问题
- 《编程之美》读书笔记(一):中国象棋将帅问题
- 《编程之美》学习笔记 1.2中国象棋将帅问题
- 《编程之美》学习笔记——中国象棋将帅问题
- 《编程之美》 1.2 中国象棋将帅问题
- 编程之美-1.2中国象棋将帅问题
- 编程之美1.2中国象棋将帅问题——转载+自己的一点理解
- 编程之美1.2中国象棋将帅问题
- 《编程之美》读书笔记(一):中国象棋将帅问题
- 读书笔记--《编程之美》--中国象棋将帅问题
- 《编程之美》之读书笔记 1.2中国象棋将帅问题
- 《编程之美》读书笔记(一):中国象棋将帅问题
- 编程之美-中国象棋将帅问题
- 《编程之美》之中国象棋将帅问题
- )《编程之美》读书笔记(一):中国象棋将帅问题
- 《编程之美》学习笔记 中国象棋将帅问题
- 编程之美:中国象棋将帅问题解法二
- 编程之美:中国象棋将帅问题
- 《编程之美》读书笔记01: 1.2中国象棋将帅问题