👤

Programul citește de la tastatură, de pe prima linie, șirul de caractere s1. De pe a doua linie se va citi șirul s2.
Programul va afișa pe ecran un șir de caractere care apare ca subsecvență în ambele siruri și are lungime maximă. Dacă sunt mai multe astfel de șiruri, se va afișa cel care începe pe poziția cea mai din stânga din primul șir.

Exemplu:
Input:
Tema poemului citat o reprezinta conditia omului de geniu
Conditia omului de geniu este redata in poemul citat

Output:
onditia omului de geniu


Răspuns :

► PROGRAM C++

#define _CRT_SECURE_NO_WARNINGS

#include <iostream>

#include <cstring>

using namespace std;

int main() {

char s1[1000], s2[1000], substr[1000], maxsubstr[1000] = "";

cin.getline(s1, 1000);

cin.getline(s2, 1000);

//Pentru fiecare subsecventa din s1 dintre i si j

for (int i = 0; i < strlen(s1); i++) {

 for (int j = i; j <= strlen(s1); j++) {

  strncpy(substr, s1 + i, j - i + 1);

  substr[j - i + 1] = 0;

  //Daca aceasta subsecventa apare in s2, verifica daca e maxima si copiaza

  if (strstr(s2, substr)) {

   if (strlen(substr) > strlen(maxsubstr))

    strcpy(maxsubstr, substr);

  }

  //Daca nu apare treci la i urmator

  else break;;

 }

}

cout << maxsubstr;

}

Vezi imaginea ANDREI750238