Заявление
Рассмотрим строку длины N, состоящую только из строчных букв алфавита a-z. Пусть s[i]
будет символом в i-й позиции в строке (на основе 1). Строка является K-строкой, если существует ТОЧНО K значений i (1 <= i < N
), таких что s[i+1]<s[i]
(мы предполагаем 'a'<'b'<'c'<...<'z'
). Учитывая K, найдите самую короткую K-строку. Если есть несколько решений, найдите лексикографически самую раннюю K-строку.
Input
Первая строка содержит количество тестов T (1 <= T <= 100). Каждый тест содержит целое число K (≤ 100).
Выход </p>
выход
T строк, по одной на каждый тестовый пример, содержащих требуемую строку. Используйте только строчные буквы a-z.
Что я не могу понять, так это случай от 27 до 100. Я могу просто использовать массив символов для вычисления проблемы
Это не весь алгоритм. Я все еще пытаюсь ......
#include<iostream>
using namespace std;
int main()
{
char s[]={'0','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
int k;
cin>>k;
for(int i=k;i>=1;i--)
{
//cout<<s[i+1]<<">"<<s[i];
if(s[i+1]>s[i])
cout<<s[i];
}
system("pause");
return 0;
}