代码如下
#include <bits/stdc++.h>
using namespace std;
int s, t, w;
char c[27], z[27] = { 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 a[27], jw, n, b[27], e[27];
int main()
{
cin >> s >> t >> w;
for (int i = 1; i <= w; i++)
cin >> c[i];
for (int i = 1; i <= w; i++)
{
a[i] = c[w + 1 - i] - 'a' + 1;
e[i] = t - i + 1;
}
while (n < 5)
{
jw = 1;
int flag0 = 1;
for (int i = 1; i <= w; i++)
if (a[i] != e[i])
flag0 = 0;
if (flag0)
return 0;
for (int i = 1; i <= w; i++)
{
a[i] = a[i] + jw;
if (a[i] > t)
{
a[i] = s;
jw = 1;
}
else
jw = 0;
}
bool flag = 1;
for (int i = 1; i <= w; i++)
b[i] = a[i];
sort (b + 1, b + w + 1);
for (int i = 2; i <= w; i++)
if (b[i] == b[i - 1])
flag = 0;
for (int i = 2; i <= w; i++)
if (a[i] >= a[i - 1])
flag = 0;
if (flag)
{
for (int i = w; i >= 1; i--)
cout << z[a[i]];
n++;
cout << endl;
}
}
}
/*
for (int i = 1; i <= w; i++)
cout << a[i] << " ";
*/