[RISOLTO] Problema Nonna (0/100)

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;
}

Come hai risolto poi? :slight_smile:

Ho cercato di sistemare il codice evitando alcune cose inutili, come le variabili preso e non preso. Mi tengo il massimo direttamente nella funzione max() e poi altre piccole modifiche…inizialmente mi ha dato 80/100, poi aumentando di poco le assunzioni mi ha dato 100 :slight_smile:

Purtroppo non ho più riprovato