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