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

💥前言

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

😉解题报告

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

🤗 鸡汤来咯:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值