Documente Academic
Documente Profesional
Documente Cultură
1, 2, 1, 2, 1, 3, 1, 2, 1
0: 1, 2, 1
1: 1, 2, 1
2: 1, 2, 1
3: 1, 2, 1
4: 1, 2, 1
5: 1, 2, 1
6: 1, 2, 1
Suprapunînd vectorul p peste v observăm că avem potriviri la pozițiile 0, 2 și 6. Iată programul pentru
această metodă:
Vom vedea în anii următori că există și algoritmi mai eficienți pentru rezolvarea acestei probleme.
Comparație vectori
Dați doi vectori de caractere să se spună care este ordinea lor lexicografică. Cu alte cuvinte, ordinea în
care vor apărea cele două cuvinte în dicționar.
Un vector v1 este lexicografic mai mic decît alt vector v2 dacă v1 și v2 sînt egale de la 0 la i-1, iar
poziția i este fie în afara vectorului v1, fie v1[i] < v2[i]. Vom compara elementele vectorilor pe
aceleași poziții cîtă vreme sînt egale, oprindu-ne la prima diferență, sau cînd unul din vectori se termină.
Acolo vom decide care din vectori este mai mic.
Iată programul:
1. Răstoarnă vectorul v.
2. Răstoarnă subvectorul v[0..n-k-1]
3. Răstoarnă subvectorul v[n-k..n-1]
De ce funcționează acest algoritm?
Care este numărul de deplasări ale acestui algoritm? Demonstrați că este 3∙n.
1. calculează t1 = o1 * 60 + m1
2. calculează t2 = o2 * 60 + m2
3. calculează d = t2 - t1
4. dacă d < 0 atunci
4.1 calculează d = 24 * 60 - d
5. calculează o3 și t3 pe baza lui d, astfel:
5.1 o3 = d / 60
5.2 m3 = d % 60
6. afișează o3 și m3
Concluzie: în problemele în care avem nevoie să lucrăm cu ore, minute și secunde, este foarte important să
transformăm timpul într-un singur număr exprimat în cea mai mică unitate de timp implicată. În exemplul de
mai sus această unitate este minutul. Uneori s-ar putea să fie secunda. După transformare vom face
calculele cerute de problemă. În final vom transforma înapoi în ore, minute, posibil secunde, dacă problema
necesită acest lucru.