Ho fatto il mio algoritmo lotteria dei quadri e in locale sembra funzionare tutto a meraviglia. Riesco a fare i subtask 1 e 2, ma a partire dal subtask 3, la sottoposizione ritorna un valore errato in alcune task, mentre in altre il mio codice viene considerato come esatto. Come posso risolvere? Prendo 15/100
Allego il mio codice:
int quadri(int N, long long M, int V[]) {
// Scrivete qui la vostra soluzione
long long B, sum = 0, j = 0, i = 1, Fino = N;
bool accettato = false;
while(Fino > 0){
j = 0;
sum = 0;
for(i = 0; i < N - Fino; i++){
sum = 0;
//cout << " i = " << i << endl;
while(sum <= M && j <= Fino){
sum += V[i + j];
j++;
}
if(sum > M) break;
}
if(Fino == N){
for(i = 0; i < N; i++){
sum += V[i];
}
}
//cout << "Somma = " << sum << endl;
if(sum <= M){
return Fino;
} else {
Fino--;
}
}
return Fino;
Restituisce in output 5, è sbagliato?
Aggiornamento: sono riuscito a migliorare il codice, grazie al tuo output ho capito l’errore, ora resta soltanto il migliorare la velocitĂ
La risposta corretta è 6 come che si può verificare anche manualmente. una buona idea, suggerita anche dal testo dell’esercizio, è quella di usare una sliding window che ti permette, anche, di risolvere il problema in maniera lineare.
di pomeriggio ho implementato l’algoritmo da te consigliato, ora prendo 45/100, il programma impiega troppo per eseguire vari testcase, qualcuno sa se è possibile implementare una ricerca binaria? E se possibile, come dovrei fare?
Scusa ma la corretta non dovrebbe essere 5? 3 +3+3+3+2 fa 14 e siamo a 5 numeri.Se metti 6 numeri tra le possibili combinazioni c’è anche 14+2 che supera 15 …