[C] Esercizio backtracking fantacalcio

di il
1 risposte

[C] Esercizio backtracking fantacalcio

Buongiorno, ho un problema relativo al seguente esercizio, da realizzare in C :

Filippo vuole partecipare al torneo di fantacalcio dell'università con l'obiettivo di avere la squadra sulla carta migliore, con il budget a disposizione . L'insieme dei giocatori è memorizzato in un vettore, dove ciascun elemento contiene i dati di un singolo giocatore: prezzo di acquisto, ruolo, voto complessivo dell'anno precedente.
Aiutate Filippo, trovando la squadra con il voto medio più alto (calcolato su tutti i calciatori acquistati) , rispettando i seguenti vincoli:
- la spesa complessiva non deve essere superiore ad una costante BUDGET
- la squadra deve avere in rosa almeno 2 portieri , almeno 5 difensori, almeno 7 centrocampisti, almeno 5 attaccanti.
L'algoritmo deve assicurare la soluzione ottima complessiva.

Fino al primo "trattino", ci sono, inteso come struttura. Il problema principale arriva col secondo trattino, che non riesco a realizzare e ho idee piuttosto confuse su come farlo e integrarlo con la prima parte. Se qualcuno riesce a darmi una mano mi sarebbe molto utile, e per un esame abbastanza imminente.
Grazie per le risposte
Fabio

1 Risposte

  • Re: [C] Esercizio backtracking fantacalcio

    Se hai dati limitati un bruteforce fa al caso tuo.

    altrimenti un idea potrebbe essere :
    -per ogni giocatore calcoli il rapporto bravura/prezzo.
    -per ogni ruolo trovi la combinazione di giocatori migliore.
    -formi la squadra con i soli componenti necessari.
    -se sei fuori budget sostituisci i giocatori con il rapporto peggiore con altri di prezzo minore.
    -se invece non hai raggiunto il budget aggiungi i giocatori con il rapporto maggiore eventualmente sostituendoli ( due giocatori che costano poco possono superare assieme un giocatore di prezzo maggiore).


    poi puoi inserire dei coefficienti per ogni ruolo in modo a garantire un miglior attacco, difesa, ecc... (dato che spesso una squadra può investire in determinati ruolo a scapito di altri)


    PS: questa non è LA soluzione, ma è una possibile strada
Devi accedere o registrarti per scrivere nel forum
1 risposte