题目链接 题意 : 求斐波那契数列第n项 很简单一道题, 写它是因为想水一篇博客 勾起了我的回忆 首先, 求斐波那契数列, 一定 不 要 用 递归 ! 依稀记得当年校赛, 我在第一题交了20发超时, 就是因为用了递归, 递归时大量的出入栈操作必然比循环时间来得久 这题估摸着是每个测试样例就一个数, 记忆化的优势显示不出来, 但还是要认真看题 严格要求自己 记忆化搜索 vector<int> dp; int climbStairs(int n) { if (dp.size() <= 2)…
正常简单题:通过仔细观察推断即可看出这是一个斐波拉契数列的题目. HDOJ2041_超级楼梯 在做这题的时候我误入了思维盲区,只想着什么方法可以解决,没有看出是斐波拉契数列.因此第一次用组合数方法打了一次但是WA了,过程中我发现了WA的真正细节(整形数超过范围)还算是有所收获的. 组合数求和解 (WA:因为会炸范围导致M稍微大一些答案就错了) #include<stdio.h> #include<stdlib.h> #include<math.h> #include&l…
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2041 题目分析:题目是真的水,不难发现规律涉及斐波那契数列,就直接上代码吧. 代码如下: #include <iostream> #include <cstring> using namespace std; int t, n, num[40]; int dp(int n) { if (n == 1 || n == 2) return num[n] = n; if (num[n] !=…
时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:3739 解决:1470 题目描述: N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式.(要求采用非递归) 输入: 输入包括一个整数N,(1<=N<90). 输出: 可能有多组测试数据,对于每组数据, 输出当楼梯阶数是N时的上楼方式个数. 样例输入: 4 样例输出: 5 来源: 2008年华中科技大学计算机保研机试真题 思路: 仔细分析一下就知道是斐波那契数列. 要求不用递归,我没有用函数递归,用的是数组. 代码: #inc…
斐波那契数列想必大家都知道吧,如果不知道的话,我就再啰嗦一遍, 斐波那契数列为:1 2 3 5 8 13 ...,也就是除了第一项和第二项为1以外,对于第N项,有f(N)=f(N-1)+f(N-2). 下面我用三种方法实现这个函数,分别是:递归,循环,矩阵. 递归方法: public class Feibo { //递归方法 public static int recFeiBo(int n) { if(n<=0) { return 0; } if(n==1 || n==2) { return 1…
http://acm.tju.edu.cn/toj/showp3267.html3267.   Library Time Limit: 1.0 Seconds   Memory Limit: 65536KTotal Runs: 214   Accepted Runs: 96 Description As we all know, there are very long stairs before our library in campus III of our school. It is so…
一.前言 昨晚下班后,经理出于兴趣给我们技术组讲了讲算法相关的东西,全程一脸懵逼的听,中途还给我们出了一道比较有趣的爬楼问题,问题如下: 假设一个人从地面开始爬楼梯,规定一步只能爬一坎或者两坎,人只能往上走,例如爬到第一坎,很明显从地面到第一坎只有一种可选方式,从地面爬到第二坎,他可以从地面直接跨到第二坎,也可以先从地面到第一坎,再从第一坎到第二坎,也就是2种可选方式,那么求他爬到N楼一共有几种可选方式. 这道题涉及到了斐波那契数列,要求使用递归来求值,技术贼菜的我也是一脸懵逼,所以本着学习的心…
12.加一 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字. 你可以假设除了整数 0 之外,这个整数不会以零开头. 示例 1: 输入: [1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字 123. 解答: a = '' lis1 = [] ##定义一个空字符串和一个空列表 for i in digits: a += str(i) ##将列表里的的整数转换成字符串,并将字符串添加进空字符串a里 b = i…
斐波那契数列:1, 1, 2, 3, 5, 8, 13,...,即 f(n) = f(n-1) + f(n-2). 求第n个数的值. 方法一:迭代 public static int iterativeFibonacci(int n) { //简单迭代 int a = 1, b = 1; for(int i = 2; i < n; i ++) { int tmp = a + b; a = b; b = tmp; } return b; } 方法二:简单递归 public static long…
使用装饰器的场景 当我们想对多个函数增加一个相同的功能时,例如计数统计,缓存计算结果,记录日志等 # coding:utf-8 # [题目1] # 斐波那契数列 又称黄金分割数列,指的是这样的一个数列 1,1,2,3,5,8,13,21,,, # 这个数列从第三项开始,每一项都等于签名的2项和,求数列的第n项 def memo(func): cashe={} def wrap(*args): if args not in cashe: cashe[args]=func(*args) return…