Jam的计数法 题解
2023-09-01 20:05:02
发布于:广东
5阅读
0回复
0点赞
题目分析
分析数据,可以发现直接模拟序列变化过程即可,每次从最后一位开始往前找可以变大的位置,找到后将这个位置的字母变大一位,然后这个位置后的所有字母都顺着这个字母后序排位即可。
AC代码
#include<iostream>
using namespace std;
int a[100],b[100];
int s,t,w;
char c;
int main(){
cin>>s>>t>>w;
for(int i=1;i<=w;i++) {
cin>>c;
a[i]=c-'a';
b[w-i+1]=t-i; //计算限位
}
for(int i=1;i<=5;i++){
int k=0;
for(int j=w;j>0;j--)
if(a[j]<b[j]){
k=j;
break;
}
if(k==0) break;
a[k]++;
for(int j=k+1;j<=w;j++)
a[j]=a[j-1]+1;
for(int j=1;j<=w;j++)
cout<<char(a[j]+'a');
cout<<endl;
}
return 0;
}
这里空空如也
有帮助,赞一个