蓝桥杯世界赛b题网站扩张c++/c实现
2021/11/20 17:10:33
本文主要是介绍蓝桥杯世界赛b题网站扩张c++/c实现,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
网站扩张
题目
题目分析
本题,是一个典型的递归类问题,递归类问题,可以使用递归函数来解决,参照斐波那契数列的写法,可以仿写出来(初学者而言)
对于参赛选手的我们要学会分析问题,并将其转化为代码语言,代码量很少,难在思维,如果同学们可以理解并掌握思维方法,那么在少的代码量和好的代码风格将是得分的利器。
话不多说,正式开始分析,本题。
我们从题目可以知道,当天数也就是n小于或等于7天是,发展的人数只有一人,同样新推广出来的人也必须要超过七天才可以推广新的人,那么我们对天数进行分析,如果从推广第一个人开始,推广天数少于7天,那么就只有一个人,这便是递归的出口!
if (n<=7) return 1;
以上代码便是出口的定义,切记递归函数一定有出口!
递归的危害,一旦递归使用的量级过大,会占用极大的系统资源,上图是递归一个量级偏大的数,所占用的内存和cpu资源都是如此,所以,如果没有定义出口,递归就会一直进行下去,其产生的后果将难以估计。慎用递归,但是一定要会合理的使用递归。
出口找到后,就要开始分析出递推公式,递推公式有那些成分?
取决于所面临的问题,也就是对应的方法,推广有两个条件,新人有7天的观察期,七天过后每三天就可以推广一个人,大于七天少于11天最少也是两个人。
对公式进行描述,假设总推广日期大于7天,那么人员组成就成了,过了七天之后,推广的第一个人,他自己和他推广的人,还有就是总天数减三天,来看看是不是还大于7天,如果大于七天,就要返回这个人和这个人推广的人数,少于七天,则会触发递归出口(初始推广者就是这次触发出口而加的人),那么大于七小于11天就是第八天推广的人和自己两个人。
对上述进行代码语言描述:
int f(int n){ if(n<=7) return 1; else return f(n-7)+f(n-3); }
实现递归函数之后,这次的题目也就游刃而解了
完整代码:
#include <iostream> using namespace std; int print(int n){ if(n<=7) return 1; else return print(n-7)+print(n-3); } int main() { int n; cin>>n; cout<<print(n)<<endl; }
这篇关于蓝桥杯世界赛b题网站扩张c++/c实现的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享