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

C++
#310


O secvenţă a unui vector se numeşte palindromică dacă primul element ale secvenţei este egal cu ultimul, al doilea cu penultimul, etc.
Cerinţa

Se dă un vector cu n elemente, numere naturale. Determinaţi secvenţa palindromică de lungime maximă.
Date de intrare

Fişierul de intrare secvpal.in conţine pe prima linie numărul n; urmează cele n elemente ale vectorului, dispuse pe mai multe linii şi separate prin spaţii.
Date de ieşire

Fişierul de ieşire secvpal.out va conţine pe prima linie numerele p şi u, reprezentând indicii de început şi sfârşit ai secvenţei determinate.
Restricţii şi precizări

1 ≤ n ≤ 1000;
numerele de pe a doua linie a fişierului de intrare vor avea cel mult 4 cifre;
dacă există mai multe secvenţe palindromice de lungime maximă, se va determina cea mai din stânga;


Exemplu

secvpal.in

12
1 2 10 9 8 5 8 9 10 5 5 10

secvpal.out

3 9

Explicație

Secvenţa palindromică de lungime maximă este 10 9 8 5 8 9 10.

Răspunsuri la întrebare

Răspuns de ionutg38
8
#include <fstream> using namespace std; ifstream cin("secvpal.in"); ofstream cout("secvpal.out"); int n,a[1001],st,dr; int palindrom(int i,int j) { while(i<j) { if(a[i]!=a[j]) return 0; i++; j--; } return 1; } int main() { cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; int i,j,L,Lmax=0; for(i=1;i<=n;i++) { L=0; for(j=n;j>=i+1;j--) if(a[i]==a[j]) if(palindrom(i,j)) { L=j-i; break; } if(L>Lmax) { Lmax=L; st=i; dr=j; } } cout<<st<<' '<<dr; return 0; }
Alte întrebări interesante