象棋将帅问题

输出将帅的所有合法位置 要求代码中只使用一个变量


用1-9的数字按照优先顺序来表示每个格点的位置



要求出A(将)、B(帅)所满足的合法位置 即AB不能在一条竖线上


循环遍历AB 81次 然后判断AB是否在一条竖线上 就可以得到所有的合法信息 

两个嵌套循环即可

但是只允许使用一个变量?

按照两层循环的思想 

固定一个点 A 然后再遍历九次B  判断AB是否在一条竖线上 

遍历次数为num=81

我们可以用num/9 来固定一个A

num%9 来遍历循环B 

遍历81 次 num--


如果 num/9 和num%9 除3的语数相同 则表明两点在同一条竖线上 不满足 



int i=80;
	while(i)
	{
		if( abs( i/9 - i%9)%3!=0)
		{
			cout<< (i/9 )+1<<' '<<(i%9)+1<<"\t";
		}
		if(i%9==0)
			cout<<endl;

		i--;
	}






书上也有提到用结构体的方法~

定义一个结构体的变量 


typedef struct s
{
int a;
int b;
};

然后对a b遍历

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值