// aa ab ac ad ... az
// ba bb bc bd ... bz
// ca cb cc cd ... cz
// ...
// za zb zc zd ... zz
// 조건 => 문자 정렬된것만 출력해라
// 출력예시 => aa ab ac ...
// bb bc bd ...
// cc cd ce ...
SortedStrings.PrintSortedStrings(2);
class SortedStrings
{
public static int C = 26; // 알파벳 수
public static int length = 0; // 문자열의 길이
public static void PrintSortedStrings(int k)
{
length = k;
PrintSortedStrings(k, "");
}
public static void PrintSortedStrings(int k, string prefix)
{
if(k <= 0)
{
if(isOrder(prefix))
Console.Write(prefix + " ");
}
else
{
for (int i = 0; i < C; i++)
{
if (length == k) Console.WriteLine();
char c = GetLetter(i);
PrintSortedStrings(k - 1, prefix + c);
}
}
}
private static bool isOrder(string s)
{
for(int i = 1; i < s.Length; i++)
{
char prev = s[i - 1];
char curr = s[i];
if(prev > curr) return false;
}
return true;
}
private static char GetLetter(int i)
{
return (char)((int)'a' + i);
}
}