用模板元实现50个台阶问题,一次走一步或者两步或者3步,用模板元实现求裴波那契额数列
1.用模板元实现50个台阶问题,一次走一步或者两步或者3步
2.分析
由上面分析可以知道,到达N(N > 3)级台阶时的次数为:目标台阶的前3个台阶分别直接到目标台阶的次数总和。
3.模板元把在运行时消耗的时间,在编译器键优化。
4.通过模板元实现的代码如下:
#include <iostream>/*这里是int 类型的,N表示台阶数量*/
template<int N>
struct data
{enum { res = data<N - 1>::res + data<N - 2>::res + data<N - 3>::res };
};template<>
struct data<1>
{enum { res = 1 };
};template<>
struct data<2>
{enum { res = 2 };
};template<>
struct data<3>
{enum { res = 4 };
};void main()
{const int myint = 4;int num = data<myint>::res; //<>内部不可以有变量std::cout << num << std::endl;std::cin.get();
}
运行结果为:7
2.用模板元实现求裴波那契额数列
/*用模板元实现求裴波那契额数列,1,1,2,3,5,....,求其中F(n)=F(n-1)+F(n+2)*/
#include <iostream>/*这里是int 类型的,N表示台阶数量*/
template<int N>
struct data
{enum { res = data<N - 1>::res + data<N - 2>::res};
};template<>
struct data<1>
{enum { res = 1 };
};template<>
struct data<2>
{enum { res = 1 };
};void main()
{const int myint = 5;int num = data<myint>::res; //<>内部不可以有变量std::cout << num << std::endl;std::cin.get();
}
运行的结果是:5
用模板元实现50个台阶问题,一次走一步或者两步或者3步,用模板元实现求裴波那契额数列相关推荐
- 由递推关系式用差分方程的方法得到通项公式实现求斐波那契数列的第n项;迭代、递归、栈、差分方程之间的本质联系以及由推广的迭代法解决“变态青蛙跳台阶”问题;汉诺塔问题的数字特征以及用递归解决的原理推导。
最近几天在研究算法中一个比较基础且突出的问题,就是关于"递推关系式.递归.迭代.序列前k项和"之间的区别与联系. 一.斐波那契数列与差分方程 首先我们考察一个经典的算法,求斐波那契 ...
- 汇编:裴波那契数列前50项
汇编:裴波那契数列前50项 DATAS SEGMENTDW 200 DUP(0);一个数字需要64位,DW是16位,一共50个数字DATAS ENDSSTACKS SEGMENTDW 30 DUP(0 ...
- 斐波那契数列及青蛙跳台阶问题
题目1: 写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项. 斐波那契(Fibonacci)数列定义例如以下: f(n)=⎧⎩⎨⎪⎪0,1,f(n−1)+f(n−2),n=0n=1n& ...
- 算法练习day20——190411(重建二叉树、斐波那契数列、跳台阶、矩形覆盖、变态跳台阶、旋转数组的最小数字、矩阵中的路径)
1.重建二叉树 根据二叉树的前序遍历和中序遍历的结果,重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. preorder = [3,9,20,15,7].inorder = [9 ...
- 矩阵快速幂及斐波那契数列模板
本篇博客先给出矩阵快速幂以及利用矩阵快速幂求斐波那契数列的模板,讲解待更新-- const int N=10; int tmp[N][N]; void multi(int a[][N],int b[] ...
- 斐波那契数列 青蛙跳台阶 变态跳台阶
目录 一.斐波那契数列 二.青蛙跳台阶问题 三.变态跳台阶 一.斐波那契数列 题目:写一个函数,输入n,求斐波那契数列的第n项. 思路:用递归的方法,f(n) =f(n-1) + f(n-2).代码比 ...
- 剑指 Offer 10- I. 斐波那契数列/剑指 Offer 10- II. 青蛙跳台阶问题
2020-07-02 1.题目描述 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总共有多少 ...
- 青蛙跳台阶问题暨斐波那契数列
1.问题描述 一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级.求该青蛙跳上一个 n 级的台阶总共有多少种跳法. 2.问题分析 设 f(n) 表示青蛙跳上 n 级台阶的跳法数.当只有一个台阶时, ...
- 青蛙跳台阶问题(斐波拉契数列、动态规划)
青蛙跳台阶问题 题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总共有多少种跳法. 答案需要取模 1e9+7(1000000007),如计算初始结果为:10 ...
最新文章
- Seaborn使用lmplot函数可视化散点图并添加回归曲线、移除默认的回归曲线置信区间(Scatter plot with regression line、Remove CI band)
- 18年第十三届黑龙江省赛
- Kubernetes Eviction Manager工作机制分析
- ucl 数据压缩开源库 简介
- WatchOS系统开发大全(1)-AppleWatch背景介绍
- Mathematica修改默认字体
- 容器编排技术 -- kubernetes 通过环境变量向容器暴露 Pod 信息
- 海龟绘图小动物_被解救海龟经野化训练后放归大海,这一幕让人惊叹不已
- Vista初级使用技巧及故障总结
- Cortex-M3的存储器系统
- 数据结构 顺序串笔记
- Bash shell编程的语法知识点(1)
- 杨霖演讲实录∣从模块化架构到跨链生态,NULS这一年下了一盘怎么样的棋
- 2020 数据科学平台领域最具商业合作价值企业盘点
- 双重检查锁单例模式为什么要用volatile关键字?
- Pytorch 深度强化学习模型训练速度慢
- 密码暴力破解漏洞(kali crunch)
- 谷歌浏览器扩展工具---eye dropper取色器使用
- WordPress修改默认邮箱、用户名(图解)
- webapp(html5 ),移动前端webapp(html5页面)
热门文章
- Servlet 监听器
- OpenCASCADE:Modeling Algorithms模块几何工具之来自约束的曲线和曲面
- 使用外部同步的 Boost.Test 调用在 MT 环境中测试单元测试框架的可用性
- boost::stl_interfaces模块实现最小的随机访问迭代器的测试程序
- boost::statechart模块实现类型信息测试
- boost::generate相关的测试程序
- boost::math::students_t用法的测试程序
- boost::locale::generator用法的测试程序
- boost::geometry模块变换多边形的测试程序
- GDCM:LCNumeric的测试程序