Алгоритм для квеста «Турбулентность» - C#

Узнай цену своей работы

Формулировка задачи:

Наткнулся на крепкий орешек, не могу решить. Подскажите хотя бы алгоритм пожалуйста спасибо. Вот условие:
Миша решил развлечься в свободное от решения задач время и сейчас проходит квест «Турбулентность». Задание квеста заключается в том, что Мише нужно добыть статуэтку золотого кота. Миша уже добрался до сейфа, в котором предположительно находится статуэтка, и ему осталось лишь подобрать код от замка. Сообщник Миши оставил ему послание со словом, состоящим из строчных букв латинского алфавита. По опыту предыдущих квестов Миша догадался, что код — это слово минимальной длины, которое не является подстрокой переданного сообщником слова и состоит только из строчных букв латинского алфавита. Также Миша решил, что перебирать все такие слова будет слишком долго, поэтому в качестве кода от сейфа среди всех подходящих слов минимальной длины он хочет попробовать лексикографически минимальное. Помогите Мише определить, какое слово ему нужно ввести. Напомним, что подстрокой называется некоторая непрерывная часть строки. К примеру, подстроками строки abacaba являются aba, bacab, a и многие другие Напомним также, что лексикографическое сравнение строк соответствует упорядочиванию слов в словаре, а именно, сначала идут все слова, начинающиеся на букву a, затем слова, начинающиеся на букву b, и так до конца алфавита. Если у каких-то двух слов первые буквы совпадают, то они сравниваются по второй букве. В случае повторного равенства следует сравнить третью букву и так далее. К примеру, слово game лексикографически меньше слова gate, так как первые две буквы у них совпадают, а третья идет по алфавиту раньше.
тест-1:
входные данные 9 pascalabc выходные данные d
Тест-2:
входные данные 28 aabcdefghijklmnopqrstuvwxyzz выходные данные ac

Решение задачи: «Алгоритм для квеста «Турбулентность»»

textual
Листинг программы
       public static string GenWord(string s)
        {
            if (s.Length == 0) return "a";
            var c = s[s.Length - 1];
            if (c == 'z') return new string('a', s.Length+1);
            c++;
            return s.Substring(0, s.Length - 1) + c;
 
        }
 
        static void Main(string[] args)
        {
 
            var code = "a";
            var s = "aabcdefghijklmnopqrstuvwxyzz";
            while (s.Contains(code))
            {
                code = GenWord(code);
            }
 
            Console.WriteLine(code);
            Console.ReadKey();
       }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.875 из 5
Похожие ответы