当前位置: 首页 > news >正文

P1028 [NOIP 2001 普及组] 数的计算

题目描述

给出正整数nnn,要求按如下方式构造数列:

  1. 只有一个数nnn的数列是一个合法的数列。
  2. 在一个合法的数列的末尾加入一个正整数,但是这个正整数不能超过该数列最后一项的一半,可以得到一个新的合法数列。

请你求出,一共有多少个合法的数列。两个合法数列a,ba, ba,b不同当且仅当两数列长度不同或存在一个正整数i≤∣a∣i \leq |a|ia,使得ai≠bia_i \neq b_iai=bi

解法,两种(三种)

递归:
intrec(intx){if(s[x])returns[x];//避免重复,剪枝intsum=1;//这里的值设定挺重要的for(inti=1;i<=x/2;i++){s[i]=rec(i);sum+=s[i];}returnsum;}

递归就是将过于复杂的过程打包成块,然后下发处理。如果一个问题可以被拆分成多个高度相似的子问题,就可以考虑递归。

存储数据有利于剪枝,空间换时间。

“递归代码最重要的两个特征:结束条件和自我调用.自我调用是在解决子问题,而结束条件定义了最简子问题的答案.”

提问:不同递归函数中的sum值会不会互相挤占?

递推:

易知当n为奇数时,f[n]=f[n-1]
当n为偶数时,f[n]=f[n-1]+f[n/2]
这里有两种推导方式:
第一是写f[n]的通式作差,
第二种是再次运用递推思想,在n-1的基础上,多出来的是f[n/2]的值

#include"iostream"usingnamespacestd;intf[1010]={0,1};//初始化值,主要是为了f[1]intmain(){intn;cin>>n;for(inti=2;i<=n;i++){if(i%2==1)f[i]=f[i-1];elsef[i]=f[i-1]+f[i/2];}cout<<f[n];return0;}

其实这里还有一种递推,双重循环寻找,和不剪枝的递归差不多

for(inti=2;i<=n;i++){f[i]=1;//这一步初始化很重要for(intj=1;j<=i/2;j++){f[i]+=f[j];}}

大概就是以上,结束啦(=´ω`=)

http://www.jsqmd.com/news/1132130/

相关文章:

  • MP1584 降压电源 PCB 布局 5 大要点:实测 SW 节点尖峰降低 60%
  • Pandas基础:数据分析瑞士军刀
  • 《智人之上》第四章「错误:绝对正确是一种幻想 」读后总结
  • 张家口口碑黄金铂金回收白银回收实体老店
  • 《智人之上》第三章「文件:纸老虎也会咬人 」读后总结
  • NSK精密滚珠丝杠W1602MA技术详解
  • GPU打满却吞吐不涨?SGLang用Tracing+AI Agent揪出推理“黑盒”卡点
  • 我节选一些我喜欢的片段和大家分享一下,开复老师有关教育、做人、团队建设、领导能力等方面的论述以及他自己的行动太让我惊喜了!
  • ROS2/Gazebo 仿真:机器人 URDF 中惯性张量参数 4 步校准与实测验证
  • 高效同步降压转换器与PIC18F47K42的硬件设计及I2C控制
  • 来自技术新人的一个自我介绍
  • 华为设备Bootloader解锁终极指南:使用PotatoNV实现系统定制自由
  • 2026年5款自媒体录音转文字工具对比:手机/平板/PC跨平台体验谁更稳?
  • 如何免费获取八大网盘直链下载地址:LinkSwift完整使用指南
  • RAG 系统从搭建到优化:我踩过的 5 个坑,每一个都让我重新写代码
  • C语言的前置细碎知识
  • 16位ADC如何榨出24位精度?硬核拆解采集卡的软件过采样算法与三重缓冲区架构
  • Windows 11 下安装 Codex CLI,并配置独立 API 模式与桌面端分离使用
  • 重庆高口碑黄金回收白银回收
  • 2026最新调研录音整理工具选择建议 | 经过筛选的实用方案口碑盘点
  • 轻量级的数据交换格式——初识Json(下)
  • 杨紫白玉兰后台拥抱的那个男人,到底什么来头?
  • Lemos知识库-AI+知识图谱驱动智能脑进化
  • 具身数据启示录:打破物理茧房,六大源泉如何为机器人注入灵魂
  • 构建Apple Music级动态歌词体验:从架构设计到性能优化的完整技术指南
  • nullptr
  • 结构化的数据 Structured Data
  • 时刻 ShortTime --ESBasic 可复用的.NET类库(01)
  • 如何新建html文件
  • WarcraftHelper:魔兽争霸3终极优化指南,让你的经典游戏重获新生!