В
Все
М
Математика
О
ОБЖ
У
Українська мова
Х
Химия
Д
Другие предметы
Н
Немецкий язык
Б
Беларуская мова
М
Музыка
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
У
Українська література
Р
Русский язык
Ф
Французский язык
П
Психология
О
Обществознание
А
Алгебра
М
МХК
Г
География
И
Информатика
П
Право
А
Английский язык
Г
Геометрия
Қ
Қазақ тiлi
Л
Литература
И
История
nastiia4
nastiia4
17.08.2022 03:36 •  Информатика

C4. Построить из строки следующую анаграмму Ограничение времени 1 секунда
Ограничение памяти 64Mb
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
Для данного слова (последовательности строчных латинских букв) выведите следующее за ним (в лексикографическом порядке) слово, которое может быть получено из данного перестановкой букв (анаграмму). Если данное слово уже является последним среди всех своих анаграмм, то необходимо вывести первую возможную (в лексикографическом порядке) анаграмму.

Формат ввода
Задана последовательность слов, по одному слову в строке. Длина одного слова не превышает 50 символов.

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


C4. Построить из строки следующую анаграмму Ограничение времени 1 секунда Ограничение памяти 64Mb Вв
C4. Построить из строки следующую анаграмму Ограничение времени 1 секунда Ограничение памяти 64Mb Вв

Показать ответ
Ответ:
azhiltsova15ozb142
azhiltsova15ozb142
21.08.2021 13:33

На самом деле изначально здесь была другая задача. Вот ее условие:

C4. Построить из строки следующую анаграмму

Ограничение времени    1 секунда

Ограничение памяти    64Mb

Ввод    стандартный ввод или input.txt

Вывод    стандартный вывод или output.txt

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

Формат ввода

Задана последовательность слов, по одному слову в строке. Длина одного слова не превышает 50 символов.

Формат вывода

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

Ниже программный код:

#include <iostream>

#include <string>

#include <algorithm>

using namespace std;

int main() {

   string word;

   char for_sort[51];

   int count_for_sort, min_def, min_def_index;

   while (cin >> word) {

       count_for_sort = 0;

       min_def = 98;

       min_def_index = 51;

       for (int i = word.size() - 1; i >= 0; i--) {

           for_sort[count_for_sort] = word[i];

           count_for_sort++;

           if (word[i] < word[i + 1])

               break;

       }

       int shift = 0;

       if (word[word.size() - count_for_sort] < word[word.size() - count_for_sort + 1]) {

           for (int i = 0; i < count_for_sort; i++)

               if (for_sort[i] - word[word.size() - count_for_sort] > 0 &&

                   for_sort[i] - word[word.size() - count_for_sort] < min_def) {

                   min_def = for_sort[i] - word[word.size() - count_for_sort];

                   min_def_index = i;

               }

           swap(for_sort[0], for_sort[min_def_index]);

           shift = 1;

       }

       sort(for_sort + shift, for_sort + count_for_sort);

       for (int i = word.size() - count_for_sort; i < word.size(); i++)

           word[i] = for_sort[i - word.size() + count_for_sort)];

       cout << word << endl;

       word.clear();

   }

   return 0;

}

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота