Informatică, întrebare adresată de CiortescuMihai7, 9 ani în urmă

Cerința ---> #522 kSecventa1 pbinfo (va rog ajutor am nevoie de 100 pct. C++)

Se dă un vector cu n elemente, numere naturale, și un număr k. Să se stabilească dacă în vector există două secvențe de lungime k identice.

Date de intrare
Programul citește de la tastatură numerele n și k, iar apoi n numere naturale, reprezentând elementele vectorului.

Date de ieșire
Programul va afișa pe ecran numerele i j, i < j reprezentând pozițiile de început a două secvențe de lungime k identice, dacă există două astfel de secvențe, sau mesajul NU, dacă nu există două astfel de secvențe.

Dacă există mai multe perechi de secvențe identice se vor considera cele cu numerele de ordine i j minime.

Restricții și precizări
1 ≤ n ≤ 1000
1 ≤ k ≤ 15
cele n numere citite vor fi mai mici decât 1000
elementele vectorului sunt indexate de la 1 la n



Exemplu:
Intrare:
12 5
2 3 1 1 4 3 1 1 4 3 8 8

Ieșire:
2 6

Răspunsuri la întrebare

Răspuns de Razzvy
4
AI solutia in atasament.
Anexe:
Răspuns de stassahul
6
#include<bits/stdc++.h>

using namespace std;

int a[1001],n,k;
int Begin,End,ok=0;

int main()
{

    cin >> n >> k;

    for(int i=1;i<=n;i++)
        cin >> a[i];

    for(int i=1;i<n-k and !ok;i++)
    {
        for(int j=i+1;j<=n-k+1 and !ok;j++)
        {
            int ii=i,jj=j,nr=0;
            while(a[ii]==a[jj] and nr < k)
            {
                ii++;
                jj++;
                nr++;
            }
            if(nr==k)
            {
                ok=1;
                Begin=i;
                End=jj-k;
            }
        }
    }

    if(ok) cout << Begin << " " << End;
    else cout << "NU";

    return 0;

}
Alte întrebări interesante