'commit'
This commit is contained in:
34
C++专题课程/贪心/贪心算法-背包.cpp
Normal file
34
C++专题课程/贪心/贪心算法-背包.cpp
Normal file
@@ -0,0 +1,34 @@
|
||||
#include<bits/stdc++.h>
|
||||
using namespace std;
|
||||
|
||||
#define NUM 50
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> w[], v[] <20>Ѱ<EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>ź<EFBFBD><C5BA><EFBFBD>
|
||||
void Knapsack(int n,float M,float v[],float w[],float x[]) {
|
||||
int i;
|
||||
for(i = 1; i <= n; i++) x[i] = 0; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
float c = M;
|
||||
for(i = 1; i <= n; i++) { //ȫ<><C8AB><EFBFBD><EFBFBD>װ<EFBFBD>µ<EFBFBD><C2B5><EFBFBD>Ʒ,<2C>ҽ<EFBFBD> x[i] = 1
|
||||
if(w[i]>c) break;
|
||||
x[i] = 1;
|
||||
c -= w[i];
|
||||
}
|
||||
if(i <= n) x[i] = c / w[i]; //<2F><><EFBFBD><EFBFBD>Ʒi <20>IJ<EFBFBD><C4B2><EFBFBD>װ<EFBFBD><D7B0>
|
||||
}
|
||||
|
||||
int main() {
|
||||
float M = 50; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD><C9B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
float w[] = {0,10,20,30}; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
float v[] = {0,60,100,120};
|
||||
float x[NUM]; //<2F>洢ÿ<E6B4A2><C3BF><EFBFBD><EFBFBD>Ʒװ<C6B7>뱳<EFBFBD><EBB1B3><EFBFBD>ı<EFBFBD><C4B1><EFBFBD>
|
||||
|
||||
int n = (sizeof(w) / sizeof(w[0])) - 1;
|
||||
|
||||
Knapsack(n, M, v, w, x);
|
||||
|
||||
for(int i = 1; i <= n; i++)
|
||||
cout << "<EFBFBD><EFBFBD>Ʒ " << i << " װ<><D7B0><EFBFBD>ı<EFBFBD><C4B1><EFBFBD>: " << x[i] << endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user