Non sto riuscendo a capire cosa sbaglio in questo codice. Non vedo dove sia l’errore, ma mi da 0/100.
#include <iostream>
#include <fstream>
#include <limits>
#define MAX 5000
using namespace std;
int memo[MAX][MAX];
int preso;
int minimo = numeric_limits<int>::max();
int nonna(int p[],int n,int k,int somma,int i)
{
if(memo[somma][i] >= 0) return memo[somma][i];
if(i==n) return somma;
else
{
if(somma<k)
preso += nonna(p,n,k,somma+p[i],i+1);
else
preso += nonna(p,n,k,somma,i+1);
}
if(preso<minimo)
minimo = preso;
memo[somma][i] = minimo;
return minimo;
}
int main(int argc, char** argv) {
ifstream in("input.txt");
ofstream out("output.txt");
int n,k,p[MAX];
in>>n;
in>>k;
for(int i = 0;i<n;i++)
in>>p[i];
for(int i = 0;i<MAX;i++)
for(int j = 0;j<MAX;j++)
memo[i][j] = -1;
out<<nonna(p,n,k,0,0);
return 0;
}