在乙個長度為 nn 的座標軸上,蒜頭君想從 aa 點 移動到 bb 點。他的移動規則如下:
向前一步,座標增加 11。
向後一步,座標減少 11。
跳躍一步,使得座標乘 22。
蒜頭君不能移動到座標小於 00 或大於 nn 的位置。蒜頭想知道從 aa 點移動到 bb 點的最少步數是多少,你能幫他計算出來麼?
第一行輸入三個整數 nn,aa,bb,分別代表座標軸長度,起始點座標,終點座標。(0 \le a, b \le n \le 50000≤a,b≤n≤5000)
輸出乙個整數佔一行,代表蒜頭要走的最少步數。
樣例輸入
10 2 7
樣例輸出
3解析因為只需要最短路徑,考慮bfs,找出最短路即可
#includeusingnamespace
std;
queue
xx;int n,a,b;//
座標軸長度,起點,終點
int record[5005
];int changex[5]=;
intmain()
else newx=nowx+changex[i];
if(newx>n||newx<1) continue;//
注意要先判斷是否越界
if(record[newx]!=0) continue
;
if(newx==a) continue
; record[newx]=record[nowx]+1
; xx.push(newx);}}
cout
return0;
}
一維座標的移動
在乙個長度為 n的座標軸上,蒜頭君想從 a 點 移動到 b 點。他的移動規則如下 向前一步,座標增加 1。向後一步,座標減少 1 跳躍一步,使得座標乘 2 蒜頭君不能移動到座標小於 0 或大於 n 的位置。蒜頭想知道從 a 點移動到 b 點的最少步數是多少,你能幫他計算出來麼?輸入格式 第一行輸入三...
一維座標的移動
在乙個長度為 n 的座標軸上,蒜頭君想從 a 點 移動到 b 點。他的移動規則如下 向前一步,座標增加 1。向後一步,座標減少 1。跳躍一步,使得座標乘 2。蒜頭君不能移動到座標小於 0 或大於 n 的位置。蒜頭想知道從 a 點移動到 b 點的最少步數是多少,你能幫他計算出來麼?第一行輸入三個整數 ...
一維座標的移動
在乙個長度為 nn 的座標軸上,蒜頭君想從 aa 點 移動到 bb 點。他的移動規則如下 向前一步,座標增加 1。向後一步,座標減少 1。跳躍一步,使得座標乘 2。蒜頭君不能移動到座標小於 0 或大於 n 的位置。蒜頭想知道從 aa 點移動到 bb 點的最少步數是多少,你能幫他計算出來麼?輸入格式 ...