欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

RNQOJ Jam的计数法

发布时间:2025/4/14 43 豆豆
生活随笔 收集整理的这篇文章主要介绍了 RNQOJ Jam的计数法 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

题目:https://www.rqnoj.cn/problem/3

 

 

非递归做法:(严格递增 单调大于 不可等于  )

做法:循环体

         <1>操作字符串 str 从后往前找,k=1,如果s[w-k]!=t+'a'即最后一个元素存在后继,则将最后一个字母+1,得到一个新字符串 

                                                         如果s[w-k]==t+'a' 则将k++,t--继续这个循环 直到找到新的字符串 或者w-k<0

         <2>输出新字符串的值str 并将k t值还原

 

问题思路: 1、假设一开始的字符串为s

                2、经过一系列操作(一段代码K),找到了s的下一个字符串s1

                3、然后将s1赋给s,并还原初始条件

                2、s(值为s1) 又经过一系列操作(代码K),找到了s(值为s1)的下一个字符串s2

                3、然后将s2赋给s,并还原初始条件

 

             循环2,3

                

                                       

# include<iostream> using namespace std; int main() {char str[30];int s,t,w,k=1,flag=0,i,j=5;cin>>s>>t>>w>>str;int n = t;while(j>0){if(str[w-k]!='a'+t-1) //功能:寻找一个新的字符串 //属于操作2{str[w-k] = str[w-k]+1;for(i=w-k+1;i<w;i++){str[i] = str[i-1]+1;}flag=0; //找到新的字符串才能输出}else //属于操作2{k++; //找不到就往前找一位t--; //改变后继判断的值即 t-1+'a'的值flag=1; //此时仍属于在寻找新字符串的过程 不输出if(w-k<0) //提前终止的判断{break;}}if(flag==0) //属于操作3{cout<<str<<endl; //输出新找到的字符串k=1; //将k,t值还原,即还原初始条件 将新字符串看作t=n;flag=1; //为了避免没再次找到新字符串 就输出j--;}}return 0; }

 

 

 

递归做法:

转载于:https://www.cnblogs.com/wshyj/p/6349874.html

总结

以上是生活随笔为你收集整理的RNQOJ Jam的计数法的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。