荒天帝


私信TA

用户名:ljhabc

访问量:4035

签 名:

等  级
排  名 433
经  验 4895
参赛次数 1
文章发表 126
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

解题思路:

注意事项:

参考代码:

#include<bits/stdc++.h>

using namespace std;

typedef long long LL;

namespace IO{

    inline LL read(){

        LL o=0,f=1;char c=getchar();

        while(c>'9'||c<'0'){if(c=='-')f=-1;c=getchar();}

        while(c>='0'&&c<='9'){o=o*10+c-'0';c=getchar();}

        return o*f;

    }

}using namespace IO;

const int N=1e2+7,INF=0x3f3f3f3f,Mod=100000007;

string str;

int s,t,w;

int dfs(int k){

    if(k==0)return ' ';//搜索到第一位,还是没有找到答案就返回‘ ’

    char c=str[k];

    if(c+1>'a'+(t-(w-k))){//如果当前位置已经是最大值就进行下一层递归

        c=dfs(k-1);//c为上一位返回的字符

        if(c==' ')return ' ';

    }

    str[k]=c+1;//如果进去上面if,那c就是上一位的字符,这里只需要比上一位+1就好,如果没有进去上面的if就证明当前位没有到达最大值,可以直接+1;

    return str[k];//返回这一位的字符

}

int main(){

    cin>>s>>t>>w>>str;

    for(int i=1;i<=5;i++){//需要输出5个答案

        char f=dfs(w-1);//从最后一位开始搜索(因为返回的是int值,转成char就好)

        if(f!=' ')cout<<str<<endl;//如果找到答案就不为‘ ’,就输出答案

        else break;

    }

    return 0;

}


 

0.0分

0 人评分

  评论区

  • «
  • »