noip1996 挖地雷 提高組 (搜尋)

2021-07-04 09:27:53 字數 1270 閱讀 6185

a1105. 挖地雷

時間限制:

1.0s   記憶體限制:

256.0mb

總提交次數:

557ac次數:

206   平均分:

55.33

將本題分享到:

檢視未格式化的試題

提交試題討論

試題**

noip1996 提高組

問題描述

在乙個地圖上有n個地窖(n<=12),每個地窖中埋有一定數量的地雷。同時,給出地窖之間的連線路徑。

[題目要求]

當地窖及其連線的資料給出之後,某人可以從任一處開始挖地雷,每個地窖只能經過一次,然後可以沿著指出的連線往下挖(僅能選擇一條路徑),當無連線時挖地雷工作結束。設計乙個挖地雷的方案,使某人能挖到最多的地雷。

輸入格式

第一行乙個數n。

第二行n個數wi表示每個點的地雷數。

隨後n-1行若干個數。第i行第j個數表示i與i+j是否連通。1為連通,0為不連通。

輸出格式 k

1--k

2--……….k

v (挖地雷的順序)

max=ans (挖地雷的數量)

如果有多種方案則輸出字典序最小的方案。

樣例輸入 5

10 8 4 7 6

1 1 1 1

0 0 0

1 1 1

樣例輸出

2-1-3-4-5

max=35

資料規模和約定

n<=12

解析:搜尋。

用c來記錄搜尋順序。

dfs(step,p,w) :step  搜尋了幾個地窖

p     上次搜尋的地窖編號為 p 

w     目前總共搜到的地雷。

**:

#include#include#define maxn 12

using namespace std;

int a[maxn+10],n,sum=0;

int b[maxn+10],c[maxn+10],ans=0;

bool map[maxn+5][maxn+5],used[maxn+5];

void write_ans()

}

}int main()

for(i=1;i<=n;i++)used[i]=1,c[1]=i,dfs(1,i,a[i]),used[i]=0;

write_ans();

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當地窖及其連線的資料給出之後,某人可以從任一處開始挖地雷,然後可以沿著指出的連線往下挖 僅能選擇一條路徑 當無連線時挖地雷工作結束。設計乙個挖地雷...