Esercitazione per le OII

di il
1 risposte

Esercitazione per le OII

Ciao a tutti, sono nuovo qui nel forum ma credo di aver azzeccato la sezione giusta.

Mi scuso in anticipo se ho scritto un poema ma ho veramente bisogno di aiuto.

------------------------------------ PARTE 1 ----------------------------------------------

Quest'anno sono in terza superiore e abbiamo cominciato a programmare in C (cosa che mi interessa molto), siccome già dall'anno scorso conoscevo le basi della programmazione, ho deciso di iscrivermi alle Olimpiadi Italiane di Informatica e sono arrivato 4° nella mia scuola classificandomi così alla prova territoriale

Di conseguenza sto cercando di esercitarmi sul sito di allenamento ufficiale (), il problema è che non riesco a fare quasi nessun programma, riesco a fare solo quelli più semplici (quasi banali)

Detto ciò immagino che ci siano determinati algoritmi che vanno usati per risolvere determinati problemi, sapete dirmi secondo voi quali sono quelli che dovrei conoscere in vista delle OII? Magari riuscite anche a darmi un link dove posso trovare vari problemi già risolti per capire quale algoritmo è stato usato per risolvere il problema?

--------------------------------------- PARTE 2 ----------------------------------------------------

Oggi sto provando a risolvere un problema sempre sul sito di allenamento che secondo me dovrebbe essere abbastanza semplice per uno che deve fare le OII, ma come al solito non so come fare.

Il problema lo potete trovare qui:

Prendendo quindi in esame quel problema, per risolverlo l'unica idea che mi è passata per la testa è stata: "Devo far testare al programma tutte le combinazioni di trampolini e poi confrontare tutte le combinazioni che hanno portato l'atleta a cadere sul materasso per cercare quella che impiega il minor numero di salti.".

Il problema è che non credo sia giusto poichè penso che l'esecuzione fonderebbe la CPU nel tentare tutte le combinazioni possibili visto che possono esserci fino a 100 000 trampolini...
E poi non saprei come implementare in C un algoritmo che prova tutte le combinazioni dei trampolini.

Detto ciò non vi sto chiedendo di risolvermi il problema scrivendomi il codice già completo, ma vi sto chiedendo:

1) Esiste (immagino di si) un modo migliore di quello a cui avevo pensato io per risolvere il problema? Se si quale?
2) Esiste un algoritmo specifico per un problema del genere (magari riadattando leggermente l'algoritmo)?

Riguardo alle due domande precedenti, sarebbe bello se mi riusciste a fornire uno pseudo-codice, così potrei provare a "tradurlo" in C.

Grazie in anticipo

1 Risposte

  • Re: Esercitazione per le OII

    Tranquillo che la CPU non si fonde in nessun caso.
    per risolvere gran parte di quei problemi il metodo "più semplice" è applicare la programmazione dinamica; come algoritmi da usare (almeno io cosi ho fatto per quegli esercizi) è pensarli tu stesso senza prenderne altri già fatti, tranne per i soliti tipo ricerca, ordinamento, input dei dati ecc...
    la soluzione tua va benissimo (almeno per iniziare): parti da una soluzione che funziona, anche lentissima, e poi cerca di ottimizzarla il più possibile magari usando strutture dati particolari per far rientrare il programma nei tempi previsti.
    come programmi che secondo me potresti fare per iniziare sono questi:








    prima di iniziare a codificare sul compilatore fatti qualche esempio in piu su carta e magari ti annoti una possibile soluzione che ti viene in mente e da li la migliori e codifichi il programma.
    ovviamente poi studiati pure le varie strutture dati
Devi accedere o registrarti per scrivere nel forum
1 risposte