码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-08-28 14:47:39      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   使用   io   ar   for   

题目要求输出“将”(A),“帅”(B)的所有合法位置,并且只能使用一个字节存储变量;

解法一:

bubuko.com,布布扣
 1 #include<iostream>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     int i=81;
 7     while(i--)
 8     {
 9         if(i/9%3==i%9%3)
10             continue;
11         else
12             cout<<i/9+1<<\t<<i%9+1<<endl;
13     }
14     return 0;
15 }
View Code

A,B各有九种取法,所以i=81,对于一个整数i=i/9*9+i%9;i%9随着i/9变化一轮,相当于一个嵌套循环;使用一个i表示两个值的变化;

当然也可以使用这种方法实现多重嵌套;

解法二:

bubuko.com,布布扣
 1 #include<iostream>
 2 using namespace std;
 3 
 4 struct myBite
 5 {
 6     unsigned char a:4;
 7     unsigned char b:4;
 8 };
 9 
10 int main(void)
11 {
12     myBite i;
13     for(i.a=1;i.a<=9;++i.a)
14         for(i.b=1;i.b<=9;++i.b)
15             if(i.a%3!=i.b%3)
16                 cout<<(int)i.a<<\t<<(int)i.b<<endl;
17     return 0;
18 }
View Code

可参考相关位操作

 

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

标签:style   blog   http   color   os   使用   io   ar   for   

原文地址:http://www.cnblogs.com/chengyuz/p/3941507.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!