Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
求大神指点#include <iostream> #include <algorithm> using namespace std; #define N 14000 int m[1000][1000]; void Knapsack(int *v, int *w, int c, int n) { int jMax = min(w[n] - 1, c); for (int j = 0; j <= jMax; j++) m[n][j] = 0; for (int j = w[n]; j <= c; j++) m[n][j] = v[n]; for (int i = n - 1; i > 1; i--) { int jMax = min(w[n] - 1, c); for (int j = 0; j <= jMax; j++) m[i][j] = m[i+1][j]; for (int j = w[n]; j <= c; j++) m[i][j] = max(m[i+1][j],m[i+1][j-w[i]]+v[i]); } m[1][c] = m[2][c]; if (c >= w[1])m[1][c] = max(m[1][c], m[2][c - w[1]] + v[1]); cout << m[1][c]<<endl; } int main() { int c, n; int w[N]; int v[N]; cin >> n >> c; for (int i = 1; i <= n; i++) cin >> w[i] >> v[i]; Knapsack(v, w, c, n); return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator