[Dynamic Programming]Example 3.1 Recursion Programming - About the Stairs
来源:互联网 发布:海康威视的设备域名 编辑:程序博客网 时间:2024/06/01 09:27
//国际大学生程序设计竞赛例题解(三)
//动态规划
//Page104
Version 1.0
#include <iostream>#include <cstdio>using namespace std;int f(int n){ int ret; if(n == 0) ret = 1; else if(n == 1) ret = 1; else { ret = f(n - 1) + f(n - 2); } return ret;}int main(){ int n; cin >> n; cout << f(n) << endl; return 0;}
Version 2.0
#include <iostream>#include <cstdio>using namespace std;int f(int n){ int ret; if(n == 0 || n == 1) ret = 1; else { int temp1 = f(n - 1); int temp2 = f(n - 2); ret = temp1 + temp2; } return ret;}int main(){ int n; cin >> n; cout << f(20) << endl; return 0;}
Version 3.0
#include <iostream>#include <cstdio>using namespace std;int n;int ret;void f(){ if(n == 0 || n == 1) { ret = 1; return; } int temp; n--; //f(n - 1) f(); temp = ret; n--; //f(n - 2) f(); temp += ret; //recover n n += 2; ret = temp;}int main(){ cin >> n; f(); cout << ret << endl;}
动态规划:
空间换时间[O(N)]
#include <iostream>#include <cstdio>using namespace std;const int MAXSIZE = 100;int ret[MAXSIZE];int f(int n){ ret[0] = 1; ret[1] = 1; for(int i = 2; i < MAXSIZE; i++) { ret[i] = ret[i - 1] + ret[i - 2]; } return ret[n];}int main(){ for(int i = 0; i < MAXSIZE; i++) { ret[i] = -1; } int n; cin >> n; cout << f(n) << endl; return 0;}
空间换时间[O(1)]
#include <iostream>#include <cstdio>using namespace std;const int MAXSIZE = 100;int data[MAXSIZE];int main(){ data[0] = 1; data[1] = 1; for(int i = 2; i < MAXSIZE; i++) { data[i] = data[i - 1] + data[i - 2]; } int n; cin >> n; cout << data[n] << endl; return 0;}
- [Dynamic Programming]Example 3.1 Recursion Programming - About the Stairs
- Recursion & Dynamic Programming
- [Dynamic Programming]Recursion/Non-recursion to find the max number
- Cranking the Coding Interview: Recursion and Dynamic Programming
- LeetCode /Dynamic Programming/Climbing Stairs
- 70. Climbing Stairs dynamic programming
- Dynamic Programming:70. Climbing Stairs
- LeetCode - Fibonacci Sequence/Dynamic Programming - Climbing Stairs
- [week 10][Leetcode][Dynamic Programming] Climbing Stairs
- [Dynamic Programming]Example 3.1.2-Permutation of Number Sequence
- DP(Dynamic Programming) demo: optimal substructure(recursion) + overlapping structure(memo)
- dynamic programming
- Dynamic Programming
- Dynamic Programming
- dynamic programming
- Dynamic Programming
- dynamic programming
- Dynamic Programming
- vector size()/resize() reverse()/capacity()
- 决定采用Mercurial(Hg)了
- CIRCOS教程翻译 5.2——Geometry
- 用C#打造自己的通用数据访问类库
- 一个进程去结束另一个进程
- [Dynamic Programming]Example 3.1 Recursion Programming - About the Stairs
- Android 资源目录(Style Resource)介绍
- JS复选框checkbox:父复选框全选全取消子选框和子选框选则而父选框自动选中的代码
- android中ListView多次刷新多次重复执行getView的问题另解
- Delphi XE4 减少程序体积!
- eclipse的快捷键
- myEclipse中的web项目直接引入到eclipse中运行
- Servlet中isCommitted含义及发生的条件
- I2S(Inter-IC Sound)总线基础