编程之美 1.2 象棋将帅问题

列出所有的可能组合:

    1将    2     3   
     4    5     6
     7   8    9

     1    2   3
    4       5    6
    7    8     9帅

下面是我自己写的代码:采用移位操作。int的后8位中,前4位表示帅的1---9,后4位表示将的1---9.

#include<iostream>
using namespace std;
int main(int argc,char *argv[])
{
	int i=0;
	i=i|0x99;
	while ((i&0xf)>=1)
	{
		while (((i&0xf0)>>4)>=1)
		{
			if (((i&0xf)%3)!=(((i&0xf0)>>4)%3))
			{
				cout<<"A="<<(i&0xf)<<","<<"B="<<((i&0xf0)>>4)<<" ";
			}
			i=i-16;
		}
		cout<<endl;
		i=i-1;
		i=i|0x90;
	}
	cout<<endl;
	return 0;
}

输出结果如下:

A=9,B=8     A=9,B=7     A=9,B=5     A=9,B=4     A=9,B=2     A=9,B=1
A=8,B=9     A=8,B=7     A=8,B=6     A=8,B=4     A=8,B=3     A=8,B=1
A=7,B=9     A=7,B=8     A=7,B=6     A=7,B=5     A=7,B=3     A=7,B=2
A=6,B=8     A=6,B=7     A=6,B=5     A=6,B=4     A=6,B=2     A=6,B=1
A=5,B=9     A=5,B=7     A=5,B=6     A=5,B=4     A=5,B=3     A=5,B=1
A=4,B=9     A=4,B=8     A=4,B=6     A=4,B=5     A=4,B=3     A=4,B=2
A=3,B=8     A=3,B=7     A=3,B=5     A=3,B=4     A=3,B=2     A=3,B=1
A=2,B=9     A=2,B=7     A=2,B=6     A=2,B=4     A=2,B=3     A=2,B=1
A=1,B=9     A=1,B=8     A=1,B=6     A=1,B=5     A=1,B=3     A=1,B=2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值