Предмет: Информатика, автор: churkin75

Мир охватила эпидемия воспаления хитрости! Ученым удалось выделить ДНК из трех вероятно зараженных клеток.

ДНК каждой из клеток состоит из последовательности азотистых оснований, каждое из которых закодировано буквой A, G, T или C. Вирус также описывается последовательностью азотистых оснований и эта последовательность встраивается в произвольное место ДНК клетки.

Чтобы выделить вирус, необходимо найти самую длинную последовательность подряд идущих азотистых оснований, которая встречается в ДНК всех трех зараженных клеток.

Формат входных данных
Во входных данных задается три строки, состоящих из символов A, G, T и C, описывающих ДНК зараженных клеток. Длина строк не превосходит 100.

Формат результата
Выведите описание вируса. Если возможных вариантов несколько — выведите любой.

Ответы

Автор ответа: MegaVerkruzo
2

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

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

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


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

}


Похожие вопросы
Предмет: Математика, автор: Аноним