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


    💥前言

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

    😉解题报告

    💥[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)将每一类所包含的数量进行符合条件的除以一半进行累加,最后输出大答案

    🤗 鸡汤来咯:

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

  • 相关阅读:
    React中的类组件和函数组件(详解)
    上海控安iTB系列产品推介:iTB-AUTO汽车信息安全检测平台
    typescript:类型放宽
    Java项目的程序里为什么老用注解?注解有哪些作用
    电力物联网大数据平台架构及应用
    Golang interface 接口详细原理和使用技巧
    单向链表的C++实现(增删改查)
    蓝鹏精准测量系统 助力圆钢负公差轧制
    无涯教程-JavaScript - COUPNUM函数
    瑞芯微RK3568控制板设计总结
  • 原文地址:https://blog.csdn.net/m0_64141176/article/details/127425538