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