В
Все
Б
Биология
Б
Беларуская мова
У
Українська мова
А
Алгебра
Р
Русский язык
О
ОБЖ
И
История
Ф
Физика
Қ
Қазақ тiлi
О
Окружающий мир
Э
Экономика
Н
Немецкий язык
Х
Химия
П
Право
П
Психология
Д
Другие предметы
Л
Литература
Г
География
Ф
Французский язык
М
Математика
М
Музыка
А
Английский язык
М
МХК
У
Українська література
И
Информатика
О
Обществознание
Г
Геометрия
artem705
artem705
04.02.2020 00:36 •  Информатика

Мир охватила эпидемия воспаления хитрости! ученым удалось выделить днк из трех вероятно зараженных клеток. днк каждой из клеток состоит из последовательности азотистых оснований, каждое из которых закодировано буквой a, g, t или c. вирус также описывается последовательностью азотистых оснований и эта последовательность встраивается в произвольное место днк клетки. чтобы выделить вирус, необходимо найти самую длинную последовательность подряд идущих азотистых оснований, которая встречается в днк всех трех зараженных клеток. формат входных данных во входных данных задается три строки, состоящих из символов a, g, t и c, описывающих днк зараженных клеток. длина строк не превосходит 100. формат результата выведите описание вируса. если возможных вариантов несколько — выведите любой.

Показать ответ
Ответ:
mark086
mark086
09.10.2020 11:05

Решал эту штуку на с++.

И я думаю это самый норм язык для этого, потому что я перебирал

Кстати, если мой учитель это читает, я сам сделал эту штуку!


#include <iostream>

#include <string>

#include <algorithm>

#include <vector>

using namespace std;

int main()

{

   string a,b,c,mi;

   int y = 0;

   cin >> a >> b >> c;

   vector <string> z;

   if (a.length() <= b.length() && a.length() <= c.length()){

       mi = a;

   }

   else if (b.length() <= a.length() && b.length() <= c.length()){

       mi = b;

   }

   else{

       mi = c;

   }

   for (int i = 1;i <= mi.length();i++){

       y = 0;

       for (int l = 0;l < mi.length() - i + 1;l++){

           string s;

           for (int j = 0;j < i;j++){

               s = s + mi[l + j];

           }

           if (a.find(s) != std::string::npos && b.find(s) != std::string::npos && c.find(s) != std::string::npos){

               z.push_back(s);

               y = 1;

               break;

           }

       }

       if (y == 0){

           break;

       }

   }

   cout << z[z.size() - 1];

   return 0;

}

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота