這個(gè)題居然要用到三維坐標(biāo),太神奇了~
這個(gè)代碼其實(shí)我也是借鑒網(wǎng)上牛人寫的,感覺寫的非常好,略作修改之后就拿過來了;
至于那個(gè)坐標(biāo)公式,還有一小部分沒有弄懂,下次可以繼續(xù)研究下呵;
每個(gè)點(diǎn)都可以用三向坐標(biāo)來表示
最短路徑=兩點(diǎn)各坐標(biāo)差的絕對(duì)值之和決定的。用三向坐標(biāo)
表示后,你會(huì)發(fā)現(xiàn)最短路徑總是穿過3種線段,步數(shù)=各線段和=坐標(biāo)差之和.有時(shí)侯把圖轉(zhuǎn)過幾個(gè)角度或把元素分分類或掠取幾條線都可能有新發(fā)現(xiàn)。

以上轉(zhuǎn)自:
http://hi.baidu.com/sunshine_0316/blog/item/834b3f39b58f3622b9998f6f.html
#include<iostream>
#include<cmath>
#include<cstdio>
#include<algorithm>
using namespace std;

int main()


{
int n1,n2;
int i,alevel,aright,aleft,blevel,bright,bleft,steps;

scanf("%d%d",&n1,&n2);
alevel=1;
blevel=1;
for(i=1;;i=i+2)

{
if(n1-i<=0)

{
aright=(i-n1)/2+1;
aleft=(n1+1)/2;
break;
}
alevel++;
n1=n1-i;
}
for(i=1;;i=i+2)

{
if(n2-i<=0)

{
bright=(i-n2)/2+1;
bleft=(n2+1)/2;
break;
}
blevel++;
n2=n2-i;
}
steps=abs(alevel-blevel)+abs(aleft-bleft)+abs(aright-bright);
printf("%d\n",steps);

return 0;
}