Cod sursa(job #2102614)

Utilizator MariaSandruMaria Sandru MariaSandru Data 9 ianuarie 2018 02:19:39
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include<iostream>
#include<fstream>
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
int W[50], P[50];//greutatea si castigul fiecarui obiect
int D[50][100];
//D[i][j] cel mai bun castig pentru primele i obiecte avand greutatea insumata j
int main()
{
    int N,G;
    fin>>N>>G;
    for (int i = 1; i <= N; ++i)
    {
        fin>>W[i]>>P[i];
    }
    //CASTIGUL MAXIM OBTINUT
    for( int j = G; j >= 0;j--)
    D[0][j]=0;
    for( int i = 1; i <= N; i++)
    D[i][0]=0;
    for( int i = 1; i <= N; i++)
        for( int j =0; j<= G;j++)
        if(W[i]>j)
        D[i][j]=D[i-1][j];
        else
            if( D[i-1][j] < D[i-1][j-W[i]] + P[i] )
                D[i][j] = D[i-1][j-W[i]] + P[i];//adaug obiectul i
            else
                D[i][j]=D[i-1][j];//nu adaug obiectul i

    fout<<D[N][G];
    return 0;
}