• 【百日刷题计划 第十一天】——熟悉函数,递归及递推 函数,递归及递推基础题


    💥前言

            ☀️大家好☀️,我是烧蔬菜😁,最近做算法题可以感受到自己确实有点懈怠了😐,所以给自己定一个百日刷题计划,希望自己可以一直坚持下去💪,每天做题,也把题题解写下,记录自己每天的做题痕迹来激励提升自己获取正反馈✊,并且与大家分享下去😁

    😉解题报告

    💥[NOIP2001 普及组] 数的计算

    biu~

    ☘️ 题目描述☘️

            我们要求找出具有下列性质数的个数(包含输入的正整数 n n n)。

            先输入一个正整数 n n n n ≤ 1000 n \le 1000 n1000),然后对此正整数按照如下方法进行处理:
            1. 不作任何处理;
            2. 在它的左边拼接一个正整数,但该正整数不能超过原数,或者是上一个被拼接的数的一半
            3. 加上数后,继续按此规则进行处理直到不能再加正整数为止

             输入格式
            一行,一个正整数 n n n n ≤ 1000 n \le 1000 n1000)。

            输出格式
            一个整数,表示具有该性质数的个数。

            样例 1
            样例输入 1
            6
            样例输出 1
            6

            提示
            【样例解释】
            满足条件的数为: 6 6 6 16 16 16 26 26 26 126 126 126 36 36 36 136 136 136

    🤔一、思路:

            (1)利用递推的思想,将符合条件的每一类所包含的数量,进行从小到大进行累加
            递推:从初值出发反复进行某一运算得到所需结果。

    😎二、源码:

    #include 
    using namespace std;
    int f[1010];
    int n;
    
    int main() {
    	cin >> n;
    
    	for (int i = 1; i <= n; i++) {			//(1)
    		for (int j = 1; j <= i / 2; j++) {
    			f[i] += f[j];
    		}
    		f[i]++;
    	}
    	cout << f[n];
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    😮三、代码分析:

            (1)将每一类所包含的数量进行符合条件的除以一半进行累加,最后输出大答案

    🤗 鸡汤来咯:

            凡是新的事情在起头总是这样一来的,起初热心的人很多,而不久就冷淡下去,撒手不做了,因为他已经明白,不经过一番苦工是做不成的,而只有想做的人,才忍得过这番痛苦。
    在这里插入图片描述

  • 相关阅读:
    CentOS7安装redis5.0并且搭建集群
    Java程序员进阶全过程
    Hadoop的第三大组成:YARN框架
    c++取出文件路径中的文件名
    devops|中小公司不要做研发效能度量
    文本检测及识别小组周报
    java中优雅的判空之Optional和其基本用法
    计算机毕业设计ssm基于vuejs的二手车交易平台ue120系统+程序+源码+lw+远程部署
    模型案例推荐:电力大数据项目案例模型分享
    电脑小技巧45个
  • 原文地址:https://blog.csdn.net/m0_64141176/article/details/127425538