5294 挖地雷
時間限制: 1 s
空間限制: 1000 kb
題目等級 : ** gold
題目描述 description
在乙個地圖上有n個地窖(n<=20),每個地窖中埋有一定數量的地雷。同時,給出地窖之間的連線路徑。當地窖及其連線的資料給出之後,某人可以從第乙個地窖開始挖地雷,然後可以沿著指出的連線往下挖(僅能選擇一條路徑),當無連線時挖地雷工作結束。設計乙個挖地雷的方案,使某人能挖到最多的地雷。
輸入描述 input description
輸入檔案mine.in有若干行。
第1行只有乙個數字,表示地窖的個數n。
第2行有n個數,分別表示每個地窖中的地雷個數。
第3行至第n+1行表示地窖之間的連線情況:
第3行有n-1個數(0或1),表示第乙個地窖至第2個、第3個、…、第n個地窖有否路徑連線。如第3行為1 1 0 0 0 … 0,則表示第1個地窖至第2個地窖有路徑,至第3個地窖有路徑,至第4個地窖、第5個、…、第n個地窖沒有路徑。
第4行有n-2個數,表示第二個地窖至第3個、第4個、…、第n個地窖有否路徑連線。
… …第n+1行有1個數,表示第n-1個地窖至第n個地窖有否路徑連線。(為0表示沒有路徑,為1表示有路徑)。
輸出描述 output description
輸出檔案wdl.out有兩行資料。
第一行表示挖得最多地雷時的挖地雷的順序,各地窖序號間以乙個空格分隔,不得有多餘的空格。
第二行只有乙個數,表示能挖到的最多地雷數。
樣例輸入 sample input
510 8 4 7 6
1 1 1 0
0 0 0
1 11
樣例輸出 sample output
1 3 4 5
27*/
#include#include#include#includeusing namespace std;
int a[100];
int dp[100];
int res[100][100];
char road[100][100];
int main()//因為從最後一層起,每一層都儲存了到終點層的最優路徑,也就是dp最大值即dp[i]
}if(maxnelse
}} }
int len=strlen(road[m]);//m層是起點,第m層的字串長度 ,表示從m層起的最大路徑長度為len
for(i=0;iprintf("%d\n",maxn);
return 0;
}
挖地雷問題
問題描述 在乙個地圖上有n個地窖 n 20 每個地窖中埋有一定數量的地雷。同時,給出地窖之間的連線路徑。如圖3 圖3當地窖及其連線的資料給出之後,某人可以從任一處開始挖地雷,然後可以沿著指出的連線往下挖 僅能選擇一條路徑 當無連線時挖地雷工作結束。設計乙個挖地雷的方案,使某人能挖到最多的地雷。輸入檔...
挖地雷問題
目錄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當地窖及其連線的資料給出之後,某人可以從任一處開始挖地雷,然後可以沿著指出的連線往下挖 僅能選擇一條路徑 當無連線時挖地雷工作結束。設計乙個挖地雷...