标签:space using 字母 char 最大 return include string str
http://lx.lanqiao.cn/problem.page?gpid=T94
题意:给出s,t,w<=26 string由s,t组成的w位递增字符,给出string 求出它之后的5个递增排列
最大字符为t,生成下一个排列,模拟t进制+1即可,因为排列要严格递增 第j个字符最大为‘a‘+t -(w-j) 第j个字符+1后,生成b[j]开头的最小递增字典序,从该位至末位字母递增,公差为1
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e3+20;
int s,t,w;
char a[N],b[N];
void solve()
{
strcpy(b,a);
int j,i=w,count=0;
while(--i>=0)
{
j=i;
while(b[j]+1 <= ‘a‘+t-(w-j))//第j个字符的最大值
{
b[j]+=1;
while(++j<w)
{
b[j]=b[j-1]+1;//后面+1,该递增字典序最小.
}
count++;
printf("%s\n",b);
if(count==5)
return;
j=w-1;//递增后,每次最后一位+1
}
i=j;
}
}
int main()
{
while(cin>>s>>t>>w)
{
scanf("%s",a);
solve();
}
return 0;
}
标签:space using 字母 char 最大 return include string str
原文地址:http://www.cnblogs.com/HIKARI1149/p/6547935.html