#include<cstdio>
#define LastIndex LI
using namespace std;
static string AlpNum;
int small,big,wide;
bool judge(int LastIndex)
{
if(LI<0)
return 0;
AlpNum[LI]++;
if(AlpNum[LI]-'a'>big-1-(wide-LI-1))
{
if(judge(LI-1))
AlpNum[LI]=AlpNum[LI-1]+1;
else
return 0;
}
else
return 1;
}
int main()
{
cin>>small>>big>>wide;
getchar();
getline(cin,AlpNum);
for( int count=5;count>0;count--)
{
if(judge(wide-1))
cout<<AlpNum<<endl;
}
}
下面的用C通过了
#include <cstdio>
char a[30];
int s, t, w;
int add(int i)
{
if(i < 0)
return 0;
a[i] = a[i] + 1;
if(a[i] - 96 > t - (w - i) + 1)
{
if(add(i - 1) == 0)
return 0;
a[i] = a[i-1] + 1;
}
return 1;
}
int main()
{
int i;
scanf("%d %d %d", &s, &t, &w);
scanf("%s", a);
for(i = 0 ; i < 5 ; i++)
{
if(add(w - 1))
printf("%s\n", a);
}
return 0;
}