Форум программистов, компьютерный форум CyberForum.ru

Определить максимальную одинаковую подстроку, принадлежащую двум заданным строкам. Порядок следования букв не меняется. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ как написать http://www.cyberforum.ru/cpp-beginners/thread573177.html
Как вот это написать в программном коде в Visual c++
C++ Есть квадратная матрица А порядка n и вектор b с n элементами. Получить вектор Аb. Привет. Не могу разобратся, вот задание: Есть квадратная матрица А порядка n и вектор b с n элементами. Получить вектор Аb. http://www.cyberforum.ru/cpp-beginners/thread573170.html
Защита от ввода символов C++
есть код в котором я ввожу цифры нужно сделать что бы через консоль я не могу вводить больше ничего другого кроме цифр возможно такое сделать?
C++ Вывод чисел Фибоначчи
Программа выводит на экран первые N чисел ФИБОНАЧИ. но дело совсем не в этом, при выводе массива на экран - первый его элемент оказывается -842150451....я понимаю, что он просто не заполняется, но как сделать так, чтобы массив заканчивался на последней "1" чисел фибоначи и всё, и не было этого числа???? подскажите пожалуйста кто-нибудь.....??? #include <iostream> using namespace std;...
C++ как скопировать динамически заданный двумерный массив http://www.cyberforum.ru/cpp-beginners/thread573149.html
вот пример программы которая создает матрицы А(квадратную n*n) и В одномерную n вводимые из консоли и должна при этом показать верхнюю и нижнюю треугольные матрицы Т и Т1 для А а вместо копирования матрицы А в матрицу Т и Т1 создает один указатель в памяти при этом матрица А дальше должна использоваться в своем исходном виде как это копирование должно выглядеть? #include <iostream.h>...
C++ оператор string Вот листинг моей программмы. #include <iostream> #include <cstdlib> #include <string> using namespace std; struct Bisness { string itsNameZakaz; подробнее

Показать сообщение отдельно
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
13.05.2012, 19:40     Определить максимальную одинаковую подстроку, принадлежащую двум заданным строкам. Порядок следования букв не меняется.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <cmath>
#include <fstream>
#include <string>
#include <set>
using namespace std;
// функция se возвращает 1 в случае, если s1 является подстрокой s2 и 0 в противном случае
bool se(string s1,string s2){
    int j=0;
    for (unsigned int i=0;i<s2.length();i++){// идём по всем элементам 1-й строки
        if (j==s1.size()) return 1;//если набранный размер достиг размера s1, тогда s1 подстрока s2, вернуть 1 
        if (s2[i]==s1[j]) j++;else j=0;//когда набранные элементы совпадают, увеличиваем счётчик того, сколько мы набрали совпадающих символов подряд
    };
    if (j==s1.size()) return 1;// ещё одна проверка после цикла, т.к j могло увеличиться в i=s2.length()
    return 0;// ну и в случае если мы её не вышли из функции => s1 не подстрока s2
};
//функция находит ответ (строку максимальной длины, которая одновременно является подстрокой обоих строк (s1 и s2))
string func(string s1,string s2){
    string maxs="";// изначально ответ - пустая строка, т.к она является подстрокой обоих и её длина минимальна
    for (unsigned int i=0;i<s1.length();i++){ //идём в цикле по всем символам 1-й строки
        string temp="";
        for(unsigned int j=i;j<s1.length();j++){ //идём в цикле от текущей позиции до конца 1-й строки
            temp+=s1[j];// заносим в конец строки temp значение из 1-й строки
//таким образом мы переберём все варианты подстрок 1-й строки
// далее проверяем если текущая подстрока 1-й строки является подстрокой 2-й, то 
// проверяем если её размер больше, чем тот, что когда либо достигался до неё, тогда поменяем нашу итоговую строку
            if (se(temp,s2) && maxs.size()<temp.size()) maxs=temp;
        };
    };
    return maxs;
};
int main(){
    ifstream in("input.txt");
    ofstream out("output.txt");
    string s1,s2;
    in>>s1>>s2;
    out<<func(s1,s2);
    return 0;
}
 
Текущее время: 09:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru