0520 - Secventa2: Difference between revisions
Pagină nouă: Sursa: [https://www.pbinfo.ro/probleme/520/secventa2 0520 - Secventa2] ---- == Cerinţa == Se dă un vector x cu n elemente, numere naturale și un vector y cu m elemente, numere naturale. Să se determine de câte ori este vectorul y secvență în vectorul x. == Date de intrare == Programul citește de la tastatură numărul n, iar apoi n numere naturale, elementele vectorului x, apoi numărul m, iar apoi m numere naturale, elementele vectorului y. == Date de ieșire == Pr... |
No edit summary |
||
Line 23: | Line 23: | ||
# 0520 - Secventa2 | # 0520 - Secventa2 | ||
n = int(input()) | def citire(): | ||
x = list(map(int, input().split())) | n = int(input()) | ||
m = int(input()) | x = list(map(int, input().split())) | ||
y = list(map(int, input().split())) | m = int(input()) | ||
y = list(map(int, input().split())) | |||
return n, x, m, y | |||
def secventa_in_x(n, x, m, y): | |||
for i in range(n - m + 1): | cnt = 0 | ||
for i in range(n - m + 1): | |||
if x[i:i+m] == y: | |||
cnt += 1 | |||
return cnt | |||
def validare(cnt): | |||
print(cnt) | |||
if __name__ == "__main__": | |||
n, x, m, y = citire() | |||
cnt = secventa_in_x(n, x, m, y) | |||
validare(cnt) | |||
</syntaxhighlight> | </syntaxhighlight> | ||
== Explicatie Rezolvare == | |||
Funcția citire() citește datele de intrare și le returnează ca o tuplă. | |||
Funcția secventa_in_x(n, x, m, y) primește dimensiunile și vectorii x și y și returnează numărul de apariții ale secvenței y în x. | |||
Funcția validare(cnt) afișează numărul de apariții ale secvenței y în x. | |||
La final, avem blocul if __name__ == "__main__": care se ocupă de apelarea funcțiilor în ordinea necesară. |
Revision as of 19:49, 17 April 2023
Sursa: 0520 - Secventa2
Cerinţa
Se dă un vector x cu n elemente, numere naturale și un vector y cu m elemente, numere naturale. Să se determine de câte ori este vectorul y secvență în vectorul x.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, elementele vectorului x, apoi numărul m, iar apoi m numere naturale, elementele vectorului y.
Date de ieșire
Programul va afișa pe ecran numărul C, reprezentând valoarea cerută.
Restricţii şi precizări
- 1 ≤ m ≤ n ≤ 1000
Exemplu
- Intrare
- 10
- 8 5 8 5 8 3 8 5 8 6
- 3
- 8 5 8
- Ieșire
- 3
Rezolvare
Rezolvare ver. 1
<syntaxhighlight lang="python" line>
- 0520 - Secventa2
def citire():
n = int(input()) x = list(map(int, input().split())) m = int(input()) y = list(map(int, input().split())) return n, x, m, y
def secventa_in_x(n, x, m, y):
cnt = 0 for i in range(n - m + 1): if x[i:i+m] == y: cnt += 1 return cnt
def validare(cnt):
print(cnt)
if __name__ == "__main__":
n, x, m, y = citire() cnt = secventa_in_x(n, x, m, y) validare(cnt)
</syntaxhighlight>
Explicatie Rezolvare
Funcția citire() citește datele de intrare și le returnează ca o tuplă.
Funcția secventa_in_x(n, x, m, y) primește dimensiunile și vectorii x și y și returnează numărul de apariții ale secvenței y în x.
Funcția validare(cnt) afișează numărul de apariții ale secvenței y în x.
La final, avem blocul if __name__ == "__main__": care se ocupă de apelarea funcțiilor în ordinea necesară.