Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

KnapsackProblem/김태진: Difference between revisions

From ZeroWiki
imported>jereneal
No edit summary
 
imported>jereneal
No edit summary
Line 2: Line 2:
* Extremely simple, but hard to understand
* Extremely simple, but hard to understand
* Using DP
* Using DP
* Can load same items several time
  #include <stdio.h>
  #include <stdio.h>
  #include <stdlib.h>
  #include <stdlib.h>

Revision as of 11:59, 11 July 2013

0/1 KnapSack problem

  • Extremely simple, but hard to understand
  • Using DP
  • Can load same items several time
#include <stdio.h>
#include <stdlib.h>
#include <iostream>

using namespace std;
int f[10001][10001] = {0};
int main()
{
	int i,Wei,Num,k,w,Max=0;
	int weight[10001] ={0};
	int price[10001] ={0};
	scanf("%d %d",&Wei,&Num);
	for(i=1;i<=Num;i++){
		scanf("%d %d",&price[i], &weight[i]);
	}

	for(k = 1; k <= Num; k++){
		for(w = 1; w <= Wei; w++){
			if(w >= weight[k]){
				f[k][w] = max(f[k-1][w], f[k][w - weight[k]] + price[k]);
			}else{    
				f[k][w] = f[k-1][w];
			}
		}
	}
	printf("%d",f[k-1][w-1]);

	return 0;
}