Informatică, întrebare adresată de teodortoderitap37w4j, 8 ani în urmă

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


teodortoderitap37w4j: Restricții și precizări:
Sirurile s1 și s2 vor avea cel mult 1000 de caractere și vor fi formate din litere ale alfabetului englez și spații.
Caracterele din secvența comună găsită trebuie să coincidă cu exactitate (c != C)
andrei750238: Vrei rezolvarea simpla (cu complexitate mai proasta) sau rezolvarea ceva mai complexa (cu complexitate mai buna, folosind programare dinamica) ?
teodortoderitap37w4j: o rezolvare simpla si explicata la final ca la celalalt cod daca s-ar putea
teodortoderitap37w4j: dar la fel si la asta cingetline, nu cu fin

Răspunsuri la întrebare

Răspuns de andrei750238
4

► 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;

}

Anexe:

teodortoderitap37w4j: Testata pe platforma pe care lucrez si trece 4 din 10 teste.. ce se va intampla pentru:
teodortoderitap37w4j: Tema poemului citat o reprezinta conditia omului de geniu
Conditia
teodortoderitap37w4j: Nu ar trb sa afiseze "onditia"?
suntNadeaPui: tiam scris ceva
suntNadeaPui: Andrei
andrei750238: Scrie clar in cerinta ca output trebuie sa fie "onditia omului de geniu"
teodortoderitap37w4j: Ma refeream pt alt intput. Adica input:
Tema poemului citat o reprezinta conditia omului de geniu
Conditia
andrei750238: Ba da, am facut modificari, acum ar trebui sa mearga
andrei750238: Nu imi plac deloc astea cu stringuri in stil C, functiile sunt construite destul de prost.
teodortoderitap37w4j: Acuma trece 7 din 10 si nu stiu ce alte posibilitati nu acopera.
Alte întrebări interesante