首页 > 代码库 > 编程之美——中国象棋将帅问题
编程之美——中国象棋将帅问题
题目要求输出“将”(A),“帅”(B)的所有合法位置,并且只能使用一个字节存储变量;
解法一:
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 else12 cout<<i/9+1<<‘\t‘<<i%9+1<<endl;13 }14 return 0;15 }
A,B各有九种取法,所以i=81,对于一个整数i=i/9*9+i%9;i%9随着i/9变化一轮,相当于一个嵌套循环;使用一个i表示两个值的变化;
当然也可以使用这种方法实现多重嵌套;
解法二:
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 }
可参考相关位操作
编程之美——中国象棋将帅问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。