Una lumaca si insinua x un muro durante il giorno. Dopo tutto il lavoro che fa durante il giorno, si ferma a riposare un po '... ma si addormenta !! La mattina dopo si sveglia e scopre che è scivolata giù durante la notte.Soluzioni ottimizzate per i miei compiti
Se questo accade ogni giorno, quante volte la lumaca si insinua per coprire n muri di diversa altezza?
Ho scritto una funzione per contare il numero di brividi della lumaca come illustrato di seguito:
void count(int move_forward, int move_backward, int number_walls, int[] height)
{
int count = number_walls, diff = move_forward - move_backward;
while (number_walls--)
for (move_backward = move_forward; move_backward < height[number_walls]; move_backward += diff)
count++;
}
Sta funzionando bene. Ma volevo sapere se esiste un altro modo per risolvere questo problema per ottimizzare ulteriormente la velocità del programma.
(height-x)/(x-y) +1, nessun loop richiesto – amit
@Jay, BTW - Il consiglio che hai ricevuto nella prima domanda sull'uso di nomi di variabili significative è discutibile nel contesto dei loop interni. Troppi nomi troppo lunghi rendono il tuo codice tanto illeggibile quanto una serie di nomi criptici di una e due lettere. È tutto sull'equilibrio. – dmckee
Ancora un commento finché mi sto conficcando il naso. Il punto di questo esercizio potrebbe essere quello di mostrarti quel po 'seduto e pensare per un po' che puoi il problema dei singoli muri da "O (altezza)" (il come lo stavate provando) a 'O (1)' (il modo in cui amit lo risolve). – dmckee