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

递归做法:

最新文章

  1. Linux(Centos)系统上搭建SVN以及常见错误解答
  2. 【BZOJ】3427: Poi2013 Bytecomputer
  3. DEDE后台添加新变量出现:Request var not allow!的解决办法 相关案例演
  4. android studio 中的编码问题
  5. JAVA 创建类,使用类
  6. 【CentOs】配置nginx
  7. 常用搜索引擎的算分,你get了嘛?
  8. Win10环境下的Scrapy结合Tor进行匿名爬取
  9. 大数据计算:如何仅用1.5KB内存为十亿对象计数
  10. 【Android基础】eclipse常用快捷键
  11. Android使用Home键后应用程序重启的问题
  12. 光场相机重聚焦之二——Lytro Illum记录光场
  13. 练习使用markdown
  14. NumPy基础
  15. Leetcode 153. Find Minimum in Rotated Sorted Array -- 二分查找的变种
  16. table布局与div布局
  17. js 判断是否是空对象
  18. post文件的html
  19. 【C#】字段总结
  20. NetworkStream.write只能使用一次,后面再使用无效

热门文章

  1. TFS看板晨会
  2. Android(java)学习笔记84:SQLiteDatabase的query方法参数
  3. Flutter 入坑(1):flutter 环境搭建,window版本
  4. C# 理解FileInfo类的Open()方法
  5. C# 运用DirectoryInfo类和FileInfo类
  6. 单例Singleton
  7. ES6学习(二):函数的扩展
  8. 【贪心 二分图 线段树】cf533A. Berland Miners
  9. 正则python正则,提取\t\n里面的大写英文字母
  10. django+xadmin在线教育平台(一)