Pagini recente » Cei mai harnici utilizatori infoarena | Cod sursa (job #1802510) | Cod sursa (job #2558023) | Cod sursa (job #2607474) | Cod sursa (job #2524471)
#include<iostream>
#include<fstream>
using namespace std;
ifstream in("rucsac.in");
ofstream out("rucsac.out");
int max(int a, int b) { return (a > b)? a : b; }
int knapSack(int W, int wt[], int val[], int n)
{
if (n == 0 || W == 0) return 0;
if (wt[n-1] > W) return knapSack(W, wt, val, n-1);
else return max( val[n-1] + knapSack(W-wt[n-1], wt, val, n-1),
knapSack(W, wt, val, n-1) );
}
int main(){
int N,G;
in>>N>>G;
int i;
int w[50],p[50];
for(i=0;i<N;i++) {
in>>w[i]>>p[i];}
out<<knapSack(G, w, p, N);
}