rlzthu 2016-08-21 23:50:28
点我顶贴
收藏
删除
#include<iostream>
#include<vector>
#include<string>
using namespace std;
typedef vector<char> myvec;
void up(myvec &m1,int t,int w,int pos){//只确定本位
//pos:0~w-1
if(*(m1.begin()+pos)>=97+t+pos-w){//无法再加
//向前
up(m1,t,w,pos-1);
*(m1.begin()+pos)=*(m1.begin()+pos-1)+1;
}
else{//可以再加
*(m1.begin()+pos)+=1;
}
}
void out(myvec m1,int w){//输出
for(int i=0;i<w;i++){
cout<<m1[i];
}
cout<<endl;
}
int main(){
int s,t,w;
cin>>s>>t>>w;
int t1=t-s+1;//1~t1
string s1;
myvec mv1;
cin>>s1;
for(int i=0;i<s1.length();i++){
mv1.push_back(s1[i]);
}
myvec tmp=mv1;
for(int i=0;i<5;i++){
if(tmp.front()!=t-w+97){
if(*(tmp.begin()+w-1)!=96+t){//最后一位直接加
*(tmp.begin()+w-1)+=1;
out(tmp,w);
}
else{//最后一位进位
up(tmp,t,w,w-1);
out(tmp,w);
}
}
else{
cout<<"end..."<<endl;
break;
}
}
return 0;
}