P1061 Jam的计数法
题目传送门
#include<cstdio>
#include<iostream>
#include<cmath>
#include<cstring>
#include<string>
#include<algorithm>
#include<vector>
#define fre(x) freopen(#x".in","r",stdin),freopen(#x".out","w",stdout);
using namespace std;
const int MAX=2147483647;
const int N=1e6;
int st,ed,w,tot;
string num;
char f[100],d[100];
void add(int i)
{
num[i]+=1;
for(int j=i+1;j<w;j++) num[j]=num[j-1]+1;
tot++;
cout<<num<<endl;
if(tot==5) exit(0);
}
int main()
{
//fre(count);
scanf("%d%d%d",&st,&ed,&w);
cin>>num;
f[0]='a'+st-2;
for(int i=1;i<=ed-st+1;i++) f[i]=f[i-1]+1;
int j=ed-st+1;
for(int i=w-1;i>=0;i--) d[i]=f[j],j--;
for(int i=w-1;i>=0;i--)
{
if(num[i]<d[i])
{
add(i);
for(int j=w-1;j>=i;j--)
{
int temp=num[j];
while(num[j]<d[j]) add(j);
}
}
}
return 0;
}