【問題描述】
在乙個地圖上有n個地窖(n<=20),每個地窖中埋有一定數量的地雷。同時,給出地窖之間的連線路徑。如圖3
圖3當地窖及其連線的資料給出之後,某人可以從任一處開始挖地雷,然後可以沿著指出的連線往下挖(僅能選擇一條路徑),當無連線時挖地雷工作結束。設計乙個挖地雷的方案,使某人能挖到最多的地雷。
【輸入檔案】
n: (表示地窖的個數)
w1,w2,w3,……wn (表示每個地窖中埋藏的地雷數量)
a12…………… . a1n 地窖之間連線路徑(其中aij=1表示地窖i,j
a23…………..a2n 之間是否有通路:通aij=1,不通aij==0)
……..
an-1 an
【輸出檔案】
k1--k2--……….kv (挖地雷的順序)
max (挖地雷的數量)
【輸入樣例】
510,8,4,7,6
1 1 1 0
0 0 0
1 1
1【輸出樣例】
1 -> 3 -> 4 -> 5
max=27
#include#include#include#include#include#includeusing namespace std;
long dp[210]=,w[210],par[210];
int vis[210][210]=;
long i,j,k,n,x,y,l,cnt;
int main()
dp[i]=l+w[i];//知道每個小階段的最終狀態,記錄並做運算
par[i]=k;//類似資料結構裡面的鍊錶
}k=1;
for (j=2;j<=n;j++)
if (dp[j]>dp[k])
k=j;
cnt=dp[k];
printf("%d",k);
k=par[k];
while (k)
printf("\n%d\n",cnt);
return 0;
}
挖地雷問題
目錄dp二 使用一維陣列 在一條公路上埋有若干堆地雷,每堆地雷有一定的數量,地雷堆的編號為1,2,n,例如,埋有地雷數量如下 8 14 2 17 33 26 15 17 19 6此時,地雷的數量可用一維陣列a n 表示。同時,給出地雷堆之間的聯絡,從第1堆開始,它指出挖了此堆之後,還可以選擇繼續往下...
挖地雷問題 DP
挖地雷問題 p3.pas c cpp 問題描述 在乙個地圖上有n個地窖 n 20 每個地窖中埋有一定數量的地雷。同時,給出地窖之間的連線路徑。如圖3 圖3當地窖及其連線的資料給出之後,某人可以從任一處開始挖地雷,然後可以沿著指出的連線往下挖 僅能選擇一條路徑 當無連線時挖地雷工作結束。設計乙個挖地雷...
例9 6 挖地雷
時間限制 1000 ms 記憶體限制 65536 kb 在乙個地圖上有n個地窖 n 200 每個地窖中埋有一定數量的地雷。同時,給出地窖之間的連線路徑,並規定路徑都是單向的,且保證都是小序號地窖指向在序號地窖,也不存在可以從乙個地窖出發經過若干地窖後又回到原來地窖的路徑。某人可以從任一處開始挖地雷,...