#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行,包含乙個整數,表示最大價...