Алгоритм для квеста «Турбулентность» - C#
Формулировка задачи:
Наткнулся на крепкий орешек, не могу решить. Подскажите хотя бы алгоритм пожалуйста
спасибо.
Вот условие:
тест-1:
Тест-2:
Миша решил развлечься в свободное от решения задач время и сейчас проходит квест «Турбулентность». Задание квеста заключается в том, что Мише нужно добыть статуэтку золотого кота. Миша уже добрался до сейфа, в котором предположительно находится статуэтка, и ему осталось лишь подобрать код от замка.
Сообщник Миши оставил ему послание со словом, состоящим из строчных букв латинского алфавита. По опыту предыдущих квестов Миша догадался, что код — это слово минимальной длины, которое не является подстрокой переданного сообщником слова и состоит только из строчных букв латинского алфавита.
Также Миша решил, что перебирать все такие слова будет слишком долго, поэтому в качестве кода от сейфа среди всех подходящих слов минимальной длины он хочет попробовать лексикографически минимальное. Помогите Мише определить, какое слово ему нужно ввести.
Напомним, что подстрокой называется некоторая непрерывная часть строки. К примеру, подстроками строки abacaba являются aba, bacab, a и многие другие
Напомним также, что лексикографическое сравнение строк соответствует упорядочиванию слов в словаре, а именно, сначала идут все слова, начинающиеся на букву a, затем слова, начинающиеся на букву b, и так до конца алфавита. Если у каких-то двух слов первые буквы совпадают, то они сравниваются по второй букве. В случае повторного равенства следует сравнить третью букву и так далее. К примеру, слово game лексикографически меньше слова gate, так как первые две буквы у них совпадают, а третья идет по алфавиту раньше.
входные данные
9
pascalabc
выходные данные
d
входные данные
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(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д