Problema nonna aiuto

Ho 10/100
chi può aiutarmi?

#include <iostream>
#include <fstream>
using namespace std;
const int MAXN=5000, MAXK=5000, INF =1000000000;
int N,K;
int memo[MAXN+1][MAXK+1];
int min (int a, int b)

{	if (a>b)  return b;
	          else
	          return a;
}
int mangia ( int N, int K, int P[])

{for (int i=1;i<=K; i++)
{ memo[0][i]=INF;
	}
for (int i=1; i<=N; i++)
{ for (int j=0;j<=K; j++)
{

memo[i][j]=memo[i-1][j];
if (P[i-1]<=j)
     	memo[i][j]=min(memo[i][j],memo[i-1][j-P[i-1]])+P[i-1];
	  else
	    memo[i][j]=min(memo[i][j],P[i-1]);
}	
}
	
return memo[N][K];	

}
int main(){
	freopen("input.txt","r",stdin);
	freopen("output.txt","w",stdout);
	cin>>N>>K;
	int P[N];
	for (int i=0; i<N; i++)
	cin>>P[i];
	cout<<mangia(N,K,P);
	return 0;
	}

Che algoritmo è? Per caso è il knapsack?
Puoi spiegare quello che fai? Sarebbe più semplice aiutarti :slight_smile: