【蓝桥杯-递归优化】汉诺塔问题的优化
2018-02-18 18:24
204 查看
#include<iostream> #include<bits/stdc++.h> using namespace std; long long cishu=0,tili=0; void yidong(int n) { if(n==1) { cishu+=1; tili+=1; } else { yidong(n-1); cishu=cishu*2+1; tili=tili*2+n; //yidong(n-1); 因为两次递归都是一样的,所以可以省略一次递归,大大节约运行时间。 } } int main() { int N; cin>>N; yidong(N); cout<<cishu<<" "<<tili; return 0; }节约的那次递归,只需要对次数和消耗的体力进行加倍即可,注意还要增加考虑上最后一次直接搬最大的那第n块。
相关文章推荐
- 蓝桥杯-由卡片换位引发的优化问题
- 汉诺塔问题具体解答递归方法
- 学习C/C++语言:递归求解hanoi汉诺塔问题
- 递归:解决汉诺塔问题(数据结构3.2 P103)
- 递归:汉诺塔问题
- 汉诺塔问题递归解法
- java数据结构与算法-递归解决汉诺塔问题
- 递归问题:二汉诺塔
- 从汉诺塔问题看 函数尾部递归的消除 (C语言版)
- 汉诺塔问题 Hanio ——递归思想
- 汉诺塔问题与递归调用
- 递归和非递归实现汉诺塔问题
- 递归5--汉诺塔问题的栈实现
- python算法和数据结构笔记--汉诺塔问题超详细递归过程图解(堆栈数据结构)
- C++抽象编程——递归策略(1)——汉诺塔问题(2)
- 王朝 递归问题 汉诺塔
- [Python] 利用Python做汉诺塔问题递归
- 递归:解决汉诺塔问题(数据结构3.2 P103)
- C语言实现Hanoi(汉诺塔)问题的递归求解
- 用递归方法求解汉诺塔问题。