挖地雷(動態規劃 輸出路徑)

2021-08-08 12:38:06 字數 1604 閱讀 8964

時間限制: 1000 ms         記憶體限制: 65536 kb

在乙個地圖上有n個地窖(n<=200),每個地窖中埋有一定數量的地雷。同時,給出地窖之間的連線路徑,並規定路徑都是單向的,且保證都是小序號地窖指向在序號地窖,也不存在可以從乙個地窖出發經過若干地窖後又回到原來地窖的路徑。某人可以從任一處開始挖地雷,然後沿著指出的連線往下挖(僅能選擇一條路徑),當無連線時挖地雷工作結束。設計乙個挖地雷的方案,使他能挖到最多的地雷。

第一行:地窖的個數;

第二行為依次每個地窖地雷的個數;

下面若干行:

xi yi   //表示從xi可到yi,xi最後一行為"0 0"表示結束。

k1-k2-…-kv    //挖地雷的順序

挖到最多的雷。

錯誤的**:

/*

65 10 20 5 4 5

1 21 4

2 43 4

4 54 6

5 60 0

*/#include#include#define maxn 200

using namespace std;

bool a[maxn][maxn];//a[i][j]表示第i個地窖和第j個地窖是否是通路

int w[maxn];//每個地窖的地雷數

int f[maxn];//f[i]表示從第i個地窖開始挖的最多地雷數

int suf[maxn];

int main()

while(cin>>x>>y)

f[n]=w[n];//初始狀態

for(i=n-1;i>=1;i--)

maxn=f[k];

cout<

正確的**:

/*65 10 20 5 4 5

1 21 4

2 43 4

4 54 6

5 60 0

*/#include#include#define maxn 200

using namespace std;

bool a[maxn][maxn];//a[i][j]表示第i個地窖和第j個地窖是否是通路

int w[maxn];//每個地窖的地雷數

int f[maxn];//f[i]表示從第i個地窖開始挖的最多地雷數

int suf[maxn];

int main()

while(cin>>x>>y)

f[n]=w[n];//初始狀態

for(i=n-1;i>=1;i--)

}f[i]=w[i]+l;

suf[i]=k;

} k=1;

for(i=1;i<=n;i++)//從n個數中找最大值

maxn=f[k];

cout<

3 3 挖地雷 20分 動態規劃

在乙個地圖上有n個地窖 n 200 每個地窖中埋有一定數量的地雷。同時,給出地窖之間的連線路徑,並規定路徑都是單向的,且保證都是小序號地窖指向大序號地窖,也不存在可以從乙個地窖出發經過若干地窖後又回到原來地窖的路徑。某人可以從任意一處開始挖地雷,然後沿著指出的連線往下挖 僅能選擇一條路徑 當無連線時...

DFS 記錄路徑 挖地雷

在乙個地圖上有n個地窖 n 20 每個地窖中埋有一定數量的地雷。同時,給出地窖之間的連線路徑。當地窖及其連線的資料給出之後,某人可以從任一處開始挖地雷,然後可以沿著指出的連線往下挖 僅能選擇一條路徑 當無連線時挖地雷工作結束。設計乙個挖地雷的方案,使某人能挖到最多的地雷。有若干行。第1行只有乙個數字...

2018寒假集訓 Day2 動態規劃 挖地雷

挖地雷 mine 在乙個地圖上有n 個地窖 n 200 每個地窖中埋有一定數量的地雷。同時,給出地窖之間的連線路徑,並規定路徑都是單向的,且從編號小的地窖通向編號大的地窖。某人可以從任一處開始挖地雷,然後沿著指出的連線往下挖 僅能選擇一條路徑 當無連線時挖地雷工作結束。設計乙個挖地雷的方案,使他能挖...