Форум программистов, компьютерный форум CyberForum.ru

Строки: Выбрать из слов те, которые могут быть получены из образца по правилу - C++

Восстановить пароль Регистрация
 
user_p01
19 / 19 / 2
Регистрация: 03.11.2011
Сообщений: 80
08.09.2012, 11:51     Строки: Выбрать из слов те, которые могут быть получены из образца по правилу #1
Помогите пожалуйста решить задачу по теме "Строки":
Приняв первое слово за образец, выбрать из остальных слов те, которые могут быть получены из образца по следующему правилу: слова должны состоять из тех же букв, что и слово-образец, причем повторяться буквы могут только в том случае, если в образце содержится не меньшее количество этих букв. Например, из слова "программа" можно получить слова "рама", "грамм", "паром" и т.д.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2012, 11:51     Строки: Выбрать из слов те, которые могут быть получены из образца по правилу
Посмотрите здесь:

В файле-словаре найти и распечатать слова, которые могут быть полностью составлены из других слов словаря C++
C++ я учусь на высшке на программиста.. какие могут быть задачи на экзамене 1й курс .2й семестр!!.. должны быть классы!!
C++ В файле-словаре найти и распечатать слова, которые могут быть полностью составлены из других слов словаря
C++ Дан набор карточек, на каждой из которых написана буква(среди букв могут быть повторяющиеся) и список слов
подсчитать в заданной строке число слов, которые могут быть разделены пробелом, табуляцией, переводом строки C++
Найти слова которые могут быть полностью сложены из других слов,сцепление слов(конкатенация) C++
В файле-словаре найти и распечатать слова, которые могут быть полностью составлены из других слов словаря C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
08.09.2012, 15:02     Строки: Выбрать из слов те, которые могут быть получены из образца по правилу #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <string>
#include <map>
#include <vector>
 
std::map<char, int> get_pattern(std::string &str) {
    std::map<char, int> result();
    for (int i = 0; i < str.size(); ++i) {
         result[str[i]]++;
    }
    return result;
}
 
int check(std::string &str, std::map<char, int> &pattern) {
    std::map<char, int> transform = get_pattern(str);
    if (transform.size() > pattern.size()) return 0;
    for (std::map<char, int>::iterator it = transform.begin(), find; 
        it != transform.end(); ++it) 
    {
        if ( (find = pattern.find(it->first)) == pattern.end() 
            || it->second > find->second ) return 0;
    }
    return 1;
}
 
int main() {
    std::string initalStr; // начальное слово
    std::vector<std::string> strs; // слова для сравнения
    std::map<char, int> pattern = get_pattern(initalStr);
    for (std::vector<std::string> it = strs.begin(); it != strs.end(); ++it) {
        if (check(*it, pattern)) // запоминаем
    }
}
Год уже не писал перепроверь что к чему.
Yandex
Объявления
08.09.2012, 15:02     Строки: Выбрать из слов те, которые могут быть получены из образца по правилу
Ответ Создать тему
Опции темы

Текущее время: 09:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru