Блог для маленьких школьников и их родителей
ШколаЛа

Сто баллов на с++ Для прохождения последнего уровня новой игры необходимо после прохождения всех предыдущих…

Автор:
Предмет: Информатика
Уровень: 10 - 11 класс

Сто баллов на с++

Для прохождения последнего уровня новой игры необходимо после прохождения всех предыдущих уровней получить пароль, представляющий собой последовательность строчных английских букв. Во время игры пароль появляется на экране, но быстро исчезает. Василий трижды доходил в игре до последнего уровня и каждый раз записывал пароль на черновике. Некоторые символы Василий не успевал записать (он заменил их звездочками), а некоторые записал неправильно. Известно, что игра выдает данному участнику один и тот же пароль. Помогите Василию восстановить пароль. Программа искусственного интеллекта восстанавливает пароль по следующему алгоритму:

если во всех трех записях 3 или 2 буквы в соответствующей позиции совпадают, то эта буква гарантированно входит в пароль на этой позиции;

если в двух записях в соответствующей позиции «звездочки», а в третьей – буква, то она входит в пароль в соответствующей позиции;

в остальных случаях восстановить букву в данной позиции невозможно, поэтому на этой позиции в пароле придется поставить звездочку.

Технические условия. Программа читает с устройства стандартного ввода три строчки одинаковой длины, не более 1000 символов длиной – маленькие английские буквы или звездочки. Программа выводит на устройство стандартного вывода восстановленную строку – пароль,

ПРИМЕР

Введение

password

*saswodr

*das*o*a

Вывод

p*aswo**

Ответов к вопросу: 1
  • mika9pika
    28.10.2024 | 21:09

    #include <iostream>
    #include <vector>
    #include <map>

    using namespace std;

    char addSymbol(vector<string> &v, int index){
       map<char, int> cnt;
       char t = ‘*’;
       for(int i = 0; i < v.size(); i++){
           if(v[i][index] != ‘*’) t = v[i][index];
           cnt[v[i][index]]++;
       }
       if(cnt[‘*’] >= 2)
           return t;
       for(auto &i: cnt)
           if(i.second >= 2)
               return i.first;
       return ‘*’;
    }

    void solve(){
       const int N = 3;
       vector<string> s(N);
       string ans;
       for(auto &i: s) cin >> i;
       for(int i = 0; i < s.front().length(); i++)
           ans += addSymbol(s, i);
       cout << ans;
    }

    signed main() {
       solve();
    }

Ответить на вопрос:
:p :-p 8) 8-) :lol: =( :( :-( :8 ;) ;-) :(( :o:
Нажимая на кнопку я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.