0520 - Secventa2: Difference between revisions

From Bitnami MediaWiki
Flaviu (talk | contribs)
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...
 
Flaviu (talk | contribs)
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


count = 0
def secventa_in_x(n, x, m, y):
for i in range(n - m + 1): # parcurgem vectorul x
    cnt = 0
    if x[i:i + m] == y: # verificam daca subsirul y incepe aici
    for i in range(n - m + 1):
        count += 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)


print(count)


</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>

  1. 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ă.