Multicore territoriale 2019

ho utilizzato l’algoritmo dello zaino ma non trovo l’errore

#include <iostream>
using namespace std;
//multicore
struct processore {
	int c;
	int prezzo;};
	
	processore core [100]={0};
	int B; int T; int N;
int S[100]={0};
int f (int N)
{ for (int i=0; i<N; i++)
{ for (int j=0; j<=N-core[i].prezzo;j++)
	{
	if (S[j]+core[i].c>S[j+core[i].prezzo])
	   S[j+core[i].prezzo]=S[j]+core[i].c ; }
	
}return S[N];	}

int main()
{  freopen("input.txt","r",stdin);
   freopen("output.txt","w",stdout);
   cin>>T;
   for (int i=1; i<=T; i++)
   { cin>>N>>B;
     
   for (int k=0; k<N; k++)
   {      cin>>core[k].c>>core[k].prezzo;   }
   
   cout<<"Case #"<<i<<":"<<f(B)<<endl;
	
} 
return 0;	
	
}

In questo momento non riesco a testarlo ma dovresti sicuramente riinizializzare a 0 tutti gli elementi di S ogni volta che chiami la funzione f.
Inoltre int S[100]={0} inizializza a 0 solo la prima variabile, per rimettere tutto a 0 usa un ciclo for.

ho provato ad azzerare con un ciclo for ma non ho risolto ugualmente

Ah scusami, non avevo letto bene e pensavo che l’N in nella funzione fosse lo stesso del main. Il fatto è che B può essere piuttosto grande, fino ad un miliardo, non puoi quindi applicare l’algoritmo dello zaino in maniera standard dato che non ti basta la memoria.

1 Mi Piace