讨论 / 利用vector和递归实现,一遍AC
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;

}

查看更多回复
提交回复