Stavo cercando di risolvere una domanda di pratica su SPOJ https://www.spoj.pl/problems/DIEHARD/. Tuttavia, entrambi i miei avidi approcci hanno portato a una risposta errata e la ricorsione era troppo lenta per il caso peggiore. Qualcuno può dire come affrontare questo problema? Sto cercando qualcuno che mi indichi la giusta direzione.Qual è l'approccio corretto per risolvere SPOJ DIEHARD?
Il gioco è semplice. All'inizio hai una quantità di salute "H" e una quantità di armatura "A". In qualsiasi momento puoi vivere in uno qualsiasi dei tre luoghi: fuoco, acqua e aria. Dopo ogni unità di tempo, devi cambiare il tuo luogo di vita. Ad esempio, se attualmente stai vivendo un incendio, puoi passare all'acqua o all'aria.
- Se fate un passo in aria, la vostra salute aumenta di 3 e la vostra armatura aumenta di 2
- Se fate un passo in acqua, la vostra salute diminuisce di 5 e la vostra armatura diminuisce di 10
Se fate un passo nel fuoco , la vostra salute diminuisce di 20 e la vostra armatura aumenta di 5Se la vostra salute o armatura diviene < = 0, si muore all'istante
Trova il tempo massimo si può sopravvivere.
ingresso:
La prima linea si compone di un numero intero t, il numero di casi di test. Per ogni caso di test ci saranno due interi positivi che rappresentano la H iniziale e la salute iniziale armatura A.
uscita:
Per ogni caso di prova a trovare il tempo massimo che si può sopravvivere.
Qual è l'ingresso massima di H e A? –
"Vincoli di input: 1 <= t <= 10 1 <= H, A <= 1000 " –
Hai provato la soluzione golosa? Andare in aria ogni volta che è possibile perché ciò aumenta tutto, altrimenti se l'armatura> salute va in acqua altrimenti se non uccide vai al fuoco. – IVlad