藍橋杯 揹包問題

2021-10-04 19:53:33 字數 720 閱讀 4578

#include#includeusing namespace std;

const int maxn = 30;

int n,v,maxvalue=0;

int w[maxn], c[maxn];

void dfs(int index, int sumw,int sumc)

return; }

//岔道口

dfs(index+1,sumw,sumc);//不選,處理下乙個

dfs(index+1,sumw+w[index],sumc+c[index]);*/

//sumw<=v加入岔道口,

if(index ==n)return;

dfs(index+1,sumw,sumc);//不選,處理下乙個

//選上,並且不超過v,才可以繼續

if(sumw+w[index]<=v)

dfs(index+1,sumw+w[index],sumc+c[index]);

}//通過限制條件,節省節省dfs計算量的方法叫剪枝

/*測試資料

5 83 5 1 2 2

4 5 2 1 3

結果10

*/ }int main()

for(int i=0;i>c[i];

} dfs(0,0,0);

cout

}

藍橋杯 揹包問題 2 23

報時助手 藍橋杯 基礎練習 定義字元陣列 vert,s 輸出 include include include using namespace std char vert 50 20 int main puts return0 1.01揹包 有 n 件物品和乙個容量是 v 的揹包。每件物品只能使用一次...

藍橋杯 01揹包

演算法提高 01揹包 時間限制 1.0s 記憶體限制 256.0mb 問題描述 給定n個物品,每個物品有乙個重量w和乙個價值v.你有乙個能裝m重量的揹包.問怎麼裝使得所裝價值最大.每個物品只有乙個.輸入格式 輸入的第一行包含兩個整數n,m,分別表示物品的個數和揹包能裝重量。以後n行每行兩個數wi和v...

藍橋杯 01揹包

問題描述 給定n個物品,每個物品有乙個重量w和乙個價值v.你有乙個能裝m重量的揹包.問怎麼裝使得所裝價值最大.每個物品只有乙個.輸入格式 輸入的第一行包含兩個整數n,m,分別表示物品的個數和揹包能裝重量。以後n行每行兩個數wi和vi,表示物品的重量和價值 輸出格式 輸出1行,包含乙個整數,表示最大價...