解题思路:先找到jam数的规律: 如果长度为三,只用abcde五个字母,并用12345代替,则所有数为123 124 125 134 135 145 234 235 245 345 即 abc abd abe acd ace ade bcd bce bde cde; 

   所以要找到下一个数,需要从最右边一位看(把上述abcde叫做字母组), 如果不是字母组中最后一个,则最右边一位加1即可  ,  如果是字母组中最后一个,则看右边数第二位,如果不是字母组中倒第二个,则此一位加1,最后一位改成倒第二位加1,以此类推......

   下面两个函数 have判断是否存在下一个jam数, coutnext输出下一个jam数


注意事项:

参考代码:

#include<iostream>

using namespace std;


bool have(char jam[],char last[],int w);

void coutnext(char jam[],int t,int w);


int main()

{

    int s,t,w;

    cin>>s>>t>>w;

    char jam[26];

    cin>>jam;


    char last[26]= {'\0'};

    for(int i=0; i<w; i++)

    {

        last[i]='a'+t-w+i;

    }


    int n=0;

    while(have(jam,last,w) && n<5)

    {

        coutnext(jam,t,w);

        n++;

    }


    return 0;

}


bool have(char jam[],char last[],int w)

{

    for(int i=0; i<w; i++)

    {

        if(jam[i]!=last[i])

        {

            return true;

        }

    }

    return false;

}


void coutnext(char jam[],int t,int w)

{

    for(int i=w-1; i>=0; i--)

    {

        if(jam[i]-'a'<t-w+i)

        {

            jam[i]++;

            for(int j=i; j<w; j++)

            {

                jam[j]=jam[i]+(j-i);

            }

            break;

        }

    }

    cout<<jam<<endl;

}


点赞(3)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论