您的位置:首页 > 编程语言

编程之美——中国象棋将帅问题

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是内循环,故可以考虑用这两个分别表示将帅的位置,思路清晰了,细微调整便可写出代码:

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;
}


结果验证是正确的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: