題目描述
「最近不知道怎麼回事,感覺我們這個城市變成了乙個神奇的地方,有時在路上走著走著人就消失了!走著走著突然又有人出現了!你以為這是《寂靜嶺》,《生化危機》,《行屍走肉》拍攝地?……哎,先不說了,這該死的霧霾又讓我們迷路了。」李旭琳發愁地說。
張琪曼和李旭琳每天要從家到車站,小區被道路分成許多正方形的塊,共有n×m塊。由於道路太多以及霧霾的影響,她們總是迷路,所以你需要幫她們計算一下從家到車站的最短距離。注意,一般情況下,小區內的方塊建有房屋,只能沿著附近的街道行走,有時方塊表示公園,那麼就可以直接穿過。
輸入格式
第一行是n和m(0輸出格式
輸出最短距離,四捨五入到整數公尺。
樣例
樣例輸入
3 23
1 13 2
1 2樣例輸出
383精髓:
這道題主要思想就是先設定乙個判斷(標記)陣列,能對角線走的座標就設為1。在迴圈時,如果這個座標能斜著走,那麼就取斜著走和橫著走的最小值,否則就取橫著走的最小值。
細節:
1.對角線長度為141.42,並且不能取整為141。這是因為如果有很多個對角線的話,小數部分累加起來很有可能大於1,這樣的話就導致答案小了,所以必須把dp陣列定義為double雙精度浮點型別。
2.此題結果需要四捨五入,可以在結果上加0.5,然後取整數部分。
即:int(dp[n][m]+0.5);
如果這個數小數部分小於0.5,那麼它加上0.5後整數部分沒有變化;但如果小數部分大於等於0.5的話。那麼它整數部分就會加1。
#include
#include
using
namespace std;
double dp[
1005][
1005];
int pd[
1005][
1005];
intmain()
for(
int i=
1;i<=n;i++
)for
(int i=
1;i<=m;i++
)for
(int i=
1;i<=n;i++
)else}}
printf
("%d"
,int
(dp[n]
[m]+
0.5));
return0;
}
動態規劃 抄近路
動態規劃 抄近路 時間限制 1 sec 記憶體限制 64 mb 題目描述 最近不知道怎麼回事,感覺我們這個城市變成了乙個神奇的地方,有時在路上走著走著人就消失了!走著走著突然又有人出現了!你以為這是 寂靜嶺 生化危機 行屍走肉 拍攝地?哎,先不說了,這該死的霧霾又讓我們迷路了。李旭琳發愁地說。張琪曼...
演算法競賽寶典 動態規劃 抄近路
抄近路 shortline.cpp c pas 題目描述 最近不知道怎麼回事,感覺我們這個城市變成了乙個神奇的地方,有時在路上走著走著人就消失了!走著走著突然又有人出現了!你以為這是 寂靜嶺 生化危機 行屍走肉 拍攝地?哎,先不說了,這該死的霧霾又讓我們迷路了。李旭琳發愁地說。張琪曼和李旭琳每天要從...