U E D R , A S I H C RSS

KnapsackProblem/김태진 (rev. 1.1)

Knapsack Problem/김태진

0/1 KnapSack problem

  • Extremely simple, but hard to understand
  • Using DP

#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;
}
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:36
Processing time 0.0147 sec