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

DenisGaleev DenisGaleev    3   02.10.2019 05:40    26

Ответы
64681 64681  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;

}

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика