Orar semigroup #2

Orar semigroup #2

12/7 - Problema rucsacului - Programare dinamica

Problema rucsacului

#include<iomanip>
#include<iostream>
#include<fstream>
using namespace std;
int n,C,m[100][100],s[100],v[100];

void citire()
{int i,j;
ifstream f("date");
f>>n;
for(i=1;i<=n;i++)
    f>>s[i]>>v[i];
f>>C;}

void afisare()
{int i,j;
for(i=1;i<=n;i++)
{    for(j=1;j<=C;j++)
        cout<<setw(3)<<m[i][j];
cout<<endl;}
}

int maxim(int a,int b)
{if(a>b)return a;
else return b;
}

int main()
{citire();
int i,j;
for(i=1;i<=n;i++)
    for(j=1;j<=C;j++)
        if(s[i]==j || m[i-1][j-s[i]]!=0)
            m[i][j]=maxim(m[i-1][j],m[i-1][j-s[i]]+v[i]);
        else m[i][j]=m[i-1][j];
afisare();
}
Fisier
5
3 6
2 4
4 6
1 5
6 18
10

marți, 6 decembrie 2011 by DlMuresan
Categories: , | 4 comments

Comments (4)

  1. o explicare a solutie ar fi mai utila decat codul rezolvarii

  2. Multumesc

  3. sa traiesti mare smecher barosan pentru problema asta
    eu am 99 de probleme dar asta nu este una mare patron sa ajungi in imparatia cerurilor

Leave a Reply