題意
m行n列的矩陣,求從一邊到另一邊的最短路。矩陣的最頂端和最底端是相連的。
題解從最後一列開始逆推,求最短路並記錄下來。在記錄最短路的過程中,如果某一列存在兩個最優解的情況,選擇字典序小的那個最優解。最後把記錄下來的最短路輸出即可。
注意事項
注意m行1列的情況,被這種情況坑了好久。。。。
**
#include
#include
#include
#define inf 1e9
using namespace std;
int dp[20][110];
int nex[20][110];
int a[20][110];
int main()
}int ans=inf,first=0;
for(int j=m;j>=1;j--);
if(i==n)
k[1]=1;
if(i==1)
k[2]=n;
sort(k,k+3);
for(int
s=0;s
<3;s++)}}
if(j==1&&dp[i][j]int
last=first;
printf("%d",first);
for(int i=1;i<=m-1;i++)
printf("\n%d\n",ans);
}return
0;}
uva 116 (記憶化搜尋)
題意 如圖,從左到右走,每次可以往左上 up 左 fo 左下 dn 走,當走到第一行或最後一行時可以如圖穿越。求一條權值最小的路徑,並列印字典序最小的路徑。解析 狀態轉移方程 dp i j min dp i 1 m m j 1 up dp i j 1 fo dp i 1 m j 1 dn 字典序最小...
uva 539 簡單回溯)
題目大意 輸入兩個數n,m 表示有0到n 1個節點,m條邊 問?從某乙個節點從出發最多能走多少條邊 每條邊只能走一次 題目分析 列舉所有節點,回溯計算從該節點出發最多能經過幾條邊 for i 0 to n 1 列舉所有節點 dfs i,0 回溯計算從該節點出發所能經過的最大邊數 那麼dfs函式中的內...
uva 725 簡單列舉
題目大意 按從小到大的順序輸出所有形如abcde fghij n的表示式,其中a j卡位數字0 9的乙個排列,含前導0.解題思路 除數,被除數都是5位數,把fghij從1234開始列舉一直到98765,那麼abcde就是它乘以n,每一組輸出間加乙個換行。include include include...