Решение задачи Головоломка с Acmp

Без пояснения   Просмотров: 18


Петя разгадывает головоломку, которая устроена следующим образом. Дана квадратная таблица размера N×N, в каждой клетке которой записана какая-нибудь английская буква. Кроме того, дан список ключевых слов. Пете нужно, взяв очередное ключевое слово, найти его в таблице. То есть найти в таблице все буквы этого слова, причем они должны быть расположены так, чтобы клетка, в которой расположена каждая последующая буква слова, была соседней с клеткой, в которой записана предыдущая буква (клетки называются соседними, если они имеют общую сторону — то есть соседствуют по вертикали или по горизонтали). Например, на рисунке показано, как может быть расположено в таблице слово olympiad.

Код

#include <iostream>
#include <string>
#include <fstream>
#include <algorithm>
using namespace std;
 
int main()
{
    string t, rebus, words;
    int n, m, pos;
    ifstream fin("input.txt");
    fin >> n >> m;
    for(int i = 0; i < n; ++i) {
        fin >> t;
        rebus += t;
    }
    for(int i = 0; i < m; ++i) {
        fin >> t;
        words += t;
    }
    for(int i = 0; i < words.size(); ++i) {
        pos = rebus.find(words[i]);
        rebus.erase(pos, 1);
    }
    sort(rebus.begin(), rebus.end());
    cout << rebus;
    return 0;
}

         

Администратор Photo Автор: Администратор



Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться