Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/34: Рейтинг темы: голосов - 34, средняя оценка - 4.82
1 / 1 / 0
Регистрация: 06.03.2017
Сообщений: 109

Определить можно ли получить из одного имени другое путем перестановки его букв

11.08.2017, 16:29. Показов 6901. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На проверочном сайте код проходит 0%, что не так?

Если Вы читали Гарри Поттера, то знаете, что повелитель зла, Лорд Волдеморт создал свое имя путем перестановки букв в своем настоящем имени. Так из имени "Tom Marvolo Riddle" он получил "I am Lord Voldemort".

Напишите программу, которая проверяет, можно ли получить из одного имени другое путем перестановки его букв.
Входные данные

Первая строка содержит количество тестов n. Следующие n строк содержат по два слова, разделенных пробелами.

Выходные данные

Для каждого теста выведите слово "Yes", если возможно из одного имени получить другое, и "No" в противном случае.

Замечания
1) Перестановка изменяет порядок букв в слове, но никакие новые буквы не могут быть добавлены и никакие исходные буквы не могут быть удалены. Например, можно преобразовать "aabc" к "abca", но не к "bac", "abc", "aabca", "aacbb".
2) Слова содержат только символы английского алфавита('a' – 'z', 'A'-'Z').
3) Слова не содержат пробелов.
4) Можно не учитывать регистр при сравнении слов, т.е. 'a' равно 'A', 'b' равно 'B' и так далее.

Ограничения
Длина любого слова больше 0 и не превосходит 50 символов.

Входные данные
3
TomMarvoloRiddle IamLordVoldemort
stop pots
abbc bac
Выходные данные
Yes
Yes
No

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<iostream>
#include<algorithm>
#include<string> 
using namespace std;
int main()
{
int t;
string s,s1;
cin>>t;
for(int i=0;i<t;i++)
{
cin>>s>>s1;
transform(s.begin(), s.end(), s.begin(), ::tolower);
transform(s1.begin(), s1.end(), s1.begin(), ::tolower);
sort(s.begin(),s.end());
sort(s1.begin(),s1.end()); 
if(s==s1) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.08.2017, 16:29
Ответы с готовыми решениями:

Проверьте, можно ли вычеркиванием букв из одного слова получить другое
Нужна помощь,заранее спасибо!!! Проверьте, можно ли вычеркиванием букв из одного слова получить другое.

Определить, можно ли вторую строку получить путем перестановки символов первой строки
Даны два символьных строки, содержащие только символы латинского алфавита. Создать программу, которая определит, можно ли вторую строчку...

Определить, можно ли из букв одного слова составить другое
Помогите, пожалуйста, составить программу на множества.

12
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
11.08.2017, 16:37
MariaFitzgerald, Пробелы надо игнорировать.
0
1 / 1 / 0
Регистрация: 06.03.2017
Сообщений: 109
11.08.2017, 16:52  [ТС]
Байт, а как это сделать?
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
11.08.2017, 17:10
По-школьному
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
#include <iostream>
#include <cctype>
 
const int MAX_NAME_LENGTH = 256;
 
int main() {
    char firstName[MAX_NAME_LENGTH], secondName[MAX_NAME_LENGTH];
    
    while ( std::cout << "First name: " && std::cin.getline(firstName, MAX_NAME_LENGTH) && *firstName != '\0' ) {
        std::cout << "Second name: ";
        std::cin.getline(secondName, MAX_NAME_LENGTH);
        
        int firstCounters['Z' - 'A' + 1] = { 0 };
        for ( int i = 0; firstName[i]; ++i )
            if ( isalpha(firstName[i]) )
                firstCounters[toupper(firstName[i]) - 'A'] += 1;
        
        int secondCounters['Z' - 'A' + 1] = { 0 };
        for ( int i = 0; secondName[i]; ++i )
            if ( isalpha(secondName[i]) )
                secondCounters[toupper(secondName[i]) - 'A'] += 1;
 
        int j;
        for ( j = 0; j <= 'Z' - 'A' && firstCounters[j] == secondCounters[j]; ++j )
            ;
        
        std::cout << ( ( j > 'Z' - 'A' ) ? "YES" : "NO" ) << std::endl;
    }
    
    return 0;
}
Code
1
2
3
4
5
$ ./a.out 
First name: Tom Marvolo Riddle
Second name: I am Lord Voldemort
YES
First name:
1
11.08.2017, 20:29

Не по теме:

Цитата Сообщение от easybudda Посмотреть сообщение
Tom Marvolo Riddle
Гарри Поттер нравится? :)

0
11.08.2017, 20:32

Не по теме:

Croessmah, не, природная лень. Чтобы самому ничего не выдумывать, из поста скопировал :)

0
11.08.2017, 20:35

Не по теме:

Цитата Сообщение от easybudda Посмотреть сообщение
не, природная лень.
ну да. Я пост тот не читал. :D

0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
11.08.2017, 23:05
Цитата Сообщение от easybudda Посмотреть сообщение
По-школьному
Я не большой спец по плюсовым возможностям, но неужели в классе string нету метода удаления пробелов (каких-то символов) из строки? Тогда все много проще сделать на посконном и лубочном Си
0
Заблокирован
11.08.2017, 23:14
Лучший ответ Сообщение было отмечено MariaFitzgerald как решение

Решение

MariaFitzgerald, местные «эксперты», я смотрю, уже напороли чуши. «Пробелы игнорировать», «по-школьному»... У тебя отличный код! Просто выводить надо не YES, а Yes и не NO, а No.

Цитата Сообщение от Байт Посмотреть сообщение
Пробелы надо игнорировать.
Описание формата входных данных читал?
2
11.08.2017, 23:21

Не по теме:

Tree depth, Ты совершенно прав! Однако, агрессия, сквозящая в каждом твоем слове, тебя отнюдь не украшает. И не вызывает желания общаться с тобой далее.:)

0
1 / 1 / 0
Регистрация: 06.03.2017
Сообщений: 109
12.08.2017, 10:42  [ТС]
Tree depth, пожалуй не читала... Большое спасибо!
0
Заблокирован
12.08.2017, 10:50
Цитата Сообщение от MariaFitzgerald Посмотреть сообщение
пожалуй не читала
Это
Цитата Сообщение от Tree depth Посмотреть сообщение
Описание формата входных данных читал?
было не тебе.
0
 Аватар для Геомеханик
838 / 641 / 940
Регистрация: 26.06.2015
Сообщений: 1,409
12.08.2017, 11:04
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
33
34
35
36
37
38
39
40
#include <iostream>
 
bool is_cmp(const char* s1, const char* s2){
    const int  N = 26;
    int c, cs[N] = {0};
 
    while(*s1){
        c = *s1++;
        if(c >= 'A' && c <= 'Z')
            ++cs[c - 'A'];
        else if(c >= 'a' && c <= 'z')
            ++cs[c - 'a'];
    }
 
    while(*s2){
        c = *s2++;
        if(c >= 'A' && c <= 'Z')
            --cs[c - 'A'];
        else if(c >= 'a' && c <= 'z')
            --cs[c - 'a'];
    }
 
    for(int i = 0; i < N; ++i){
        if(cs[i] != 0)
            return false;
    }
    return true;
}
 
int main(void){
    char s1[] = "TomMarvoloRiddle";
    char s2[] = "IamLordVoldemort";
 
    if(is_cmp(s1, s2))
        std::cout << "Yes";
    else
        std::cout << "No";
    std::cout << std::endl;
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.08.2017, 11:04
Помогаю со студенческими работами здесь

Определить, можно ли из букв одного слова составить другое
Даны два слова, состоящие из одинакового количества букв(количество букв известно заранее). Определить, можно ли из букв одного слова,...

Определить, можно ли из букв одного слова составить другое слово
Запишите условие истинное, если: из букв фамилии «Соколенко» можно образовать слово &quot;кокон&quot;.

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

Дан одномерный целочисленный массив. Определить, можно ли получить из данной последовательности симметричную (палиндром) путем перестановки в исходной
Помогите написать код к данной задаче, пожалуйста Дан одномерный целочисленный массив. Определить, можно ли получить из данной...

Шифрование текста путем перестановки его букв
Нужно чтоб данный брались из файла и загружались в конце в другой файл Сама задача: Ребята зашифровывают записки меня местами буквы ( с...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru