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
4
Răspuns de
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;
}
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
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Istorie,
8 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Biologie,
9 ani în urmă
Biologie,
9 ani în urmă