递推法之-------核电站问题(超简洁代码!!!)
核电站问题
问题描述:
一个核电站有N个放核物质的坑,坑排列在一条直线上。如果连续3个坑中放入核物质,则会发生爆炸,于是,在某些坑中可能不放核物质。现在,请你计算:对于给定的N,求不发生爆炸的放置核物质的方案总数。
输入:
输入文件只有多行,每行对应一个正整数N<=40;
输出
输出文件有多行,每行只有一个正整数,表示方案总数
测试输入:
1
2
3
4
10
预计输出
2
4
7
13
504
分析问题:
现假设有n个坑,设n个坑可填放的方案有 f(n) 种
因为对于单个坑我们只能选择填与不填,所以我们把第n个坑的情况分为填与不填
当第n个坑里面没有填核物质,很明显这并不影响前n-1个坑的填放方案,所以我们得到,
f(n)=f(n-1)+第n个坑里填了核物质的情况下前n-1个坑的填放方案
那我我们继续分析第n-1个坑,当第n-1个坑里面没有填核物质时,很明显这并不影响前n-2个坑的填放方案,所以我们得到
f(n)=f(n-1)+f(n-2)+第n个坑和第n-1个坑里填了核物质的情况下前n-2个坑的填放方案
那我我们继续分析第n-2个坑,很明显,由于第n-1和第n个坑里面都填了核物质已经有连续两个填了的,此时第n-2个坑只能不填。
由此我们得到
f(n)=f(n-1)+f(n-2)+f(n-3)
这是一个递推公式,我们只需要知道方案的前3项,既分别为当一个坑时,两个坑时,三个坑时的方案数,用上述公式,即可求出任一坑的方案
代码如下:
#include<stdio.h>
int main()
{int a[50];a[1] = 2 ;a[2] = 4 ;a[3] = 7 ;for(int i = 4; i <= 40; i++){a[i] = a[i-1] + a[i-2] + a[i-3];}int x;while((scanf("%d", &x))!=EOF)printf("%d\n", a[x]);return 0;
}
递推法之-------核电站问题(超简洁代码!!!)相关推荐
- 【递推法】错排问题的递推式和推导过程
[递推法]错排问题的递推式和推导过程 前言:这篇博客是帮助没有见过错排的新人更好的理解错排问题的递推式和推导过程,各位大佬可自行跳过 题目链接:洛谷P1595信封 一.错排问题的定义: 很多人 ...
- 错位排列问题(递推法)
问题描述 有n个信封和n个信件,第ii个信件属于第i个信封,我们想知道,有多少种不同的方法,使得没有任何一个信件被装入正确的信封中? 思路 采用递推法. 假设当信和信封的个数为n时,错位排列的个数记为 ...
- 算法笔记方法论3 递推法与递归法
你站在桥上看风景看风景的人在楼上看你明月装饰了你的窗子你装饰了别人的梦--卞之琳 递推算法的特点 一个问题的求解需要大量重复计算,在已知的条件和所求问题之间总存在着某种相互联系的关系,在计算时,我们需 ...
- C/C++程序设计常用算法——递推法
文档声明: 以下资料均属于本人在学习过程中产出的学习笔记,如果错误或者遗漏之处,请多多指正.并且该文档在后期会随着学习的深入不断补充完善. 资料仅供学习交流使用. 作者:Aliven888 1.简述 ...
- 银行存款(C语言,递推法)
题目: 母亲为儿子sun 4年的大学生活准备了一笔存款,方式是整取零存,规定sun 每个月月底取下一个月的生活费.假设银行年利息为1.71%,计算该母亲每个月至少要存入多少钱? 算法分析: 可采用逆推 ...
- 算法设计 之 递推法
2019独角兽企业重金招聘Python工程师标准>>> 递推法就是根据已知条件,分析推导出问题中的联系,然后一步一步进行推倒直至得到结果. 根据具体问题我们需要选择是正推还是逆推来解 ...
- 几个常见的简单的算法(暴力法,递推法,枚举法,递归法,分治法,贪心法,回溯法)
最近在学习算法相关知识. 通过买的视频教程了解到了一些简单的算法,为了加深感悟,同时也为了理解,将这几个常见的算法的定义进行记录. 算法是程序的灵魂,也可以认为是程序最重要的部分. 在通过算法解决问题 ...
- 程序设计典型算法之递推法
程序设计典型算法之递推法 一时兴起,刚吃完晚饭,突然又想写点东西,可能太久没有写东西了吧! 问题:小猴吃桃问题.小猴在一天内摘了若干桃子,当天吃掉一半多一个:第二天吃掉剩下的一半桃子多一个:以后每天都 ...
- 记忆化搜素,和递推法
记忆化搜素是动态规划的改进,------自上而下,就是在递归重叠子问题时候,对子问题的重复问题的对策,就是一开始对所有子问题进行赋值(一般为-1)这样的标记方法来区分是否被查找过. 递推----也是动 ...
最新文章
- linux下添加路由的方法
- 带卷积核的神经网络的迭代次数与收敛标准的关系
- python中 s是什么意思_python – “S”在同情中意味着什么
- 2011年 CIO简历该怎么写?
- CRM数据如何让企业未卜先知
- 分节符缩写p_p值的缩写是什么?
- 无规则弹窗自动点击插件_vscode 插件会了吧,英语不好的赶紧下载 自动分析源码中的陌生单词、点击朗读单词...
- 师弟新作 | NBT:王运浩、区健辉等综述纳米孔测序技术
- asm冗余 oracle_oracle 11.2.0.1 rac 修改asm磁盘组的冗余模式(redundancy mode)为normal
- 猎洞高手Orange Tsai 亲自讲解 ProxyShell write-up
- 点云nurbs曲面重建c++代码_【科普】抢先收藏!点云数据处理技术概要
- 读《世界是数字的》笔记
- 编程零基础,如何学 Python ?
- 额外参数_Redis的复制参数学习笔记
- StringRedisTemplate和RedisTemplate区别和联
- 定制Eclipse IDE之功能篇(二)
- oracle10g在win10上的安装
- C++、Java、JavaScript中的正则表达式
- css样式 向下补白,CSS尺寸与补白
- SpringBoot配置文件(1)