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

编程之美 拒绝玄学 将帅问题简明解The problem of chinese chess about generals

2016-06-30 16:28 211 查看
将帅问题,解法二作者的思路很简洁,看到网上很多人都说是二重for循环,对我这种小白,还确实一下子不好理解。个人认为作者是将代码进行过优化的,如果不讲解,是很难理解的,反正我是推倒了一下午也没有搞明白某些细节(智商碾压呀),但是思路还是很明白

但是有时候还是要返璞归真,拿起笔,认真推导一下,说不定真的只是几分钟的事。

仿照进制计算,让Y为高位,X为低位,看过编程之美的同学应该懂我的意思 st i=1:81

i=9(y-1)+x

x不等于9时 i/9=y-1 ; x=9时 i/9=y;

可见x对于表达式有影响

对此

我们解出

y=(i/9+((i%9)&&1)带入i=9(y-1)+x

x=i+9-9*(i/9+((i%9)&&1)

至此,便可以保证我们的算法正确性,下面,只需要画上一分钟把我们的想法用c语言实现下就好。

#include<stdio.h>
int main()
{
int i=1;
while(i<82)
{

if((i/9+((i%9)&&1))%3 == i%9%3)
{i=i+1;
continue;}
printf("%d",i);
printf("A=%d,B=%d\n",i+9-(i/9+((i%9)&&1))*9,(i/9+((i%9)&&1)));
i=i+1;
}
return 0;
}


gcc运行通过。

看了好多人的解答,自认为上述解法还是很容易理解的,希望能帮到大家。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  编程之美 优化