为了引出动态规划的基本思想,请看下面的例子:
题目描述:
斐波那契数列是数学中常见的数列,也叫兔子数列,它满足:a[1]=1,a[2]=1,a[n]=a[n-1]+a[n-2](n>2),输入n,输出a[n] mod 10000007的值。(n
输入样例:
3
4
5
输出样例:
2
3
5
【算法分析】
看到题目以后,我们可以很轻松的写出两个版本的代码,一个是递推...
分类:
其他好文 时间:
2015-01-27 16:26:17
阅读次数:
402
题目大意:
给你一张无向图,其中有的边为白色有的边为黑色,问你是否有一颗生成树并且它的白色边是斐波那契数列中的一个数
思路:
求出白边最少和最多的生成树之后看是否有一个斐波那契数在这之间就可以
代码
#include
#include
#include
#include
#include
using namespace std;
int T;
struct edge{
int u...
分类:
其他好文 时间:
2015-01-26 22:57:55
阅读次数:
231
题目大意:给定一棵树,每个点上有点权,多次修改点权,以及查询两点间路径上所有点权之间能否找出三个值构成三角形的三边长
被逗了- -
首先考虑如果一些数不能构成三角形的三边长,那么这些数最多有多少个?
显然当这些数构成斐波那契数列的时候数值的个数最多- -
那么2^31以内共有多少个斐波那契数?46!
也就是说当两点间路径上的点>=47时答案一定是YES!
那么小于47时只要暴力就行- ...
分类:
其他好文 时间:
2015-01-26 22:57:17
阅读次数:
202
1. 常见的数列总结(1)斐波那契数列: 如何实现斐波那契数列,我们可以采取如下方法: (1)递归求解(慢)(2)递推法 (3)矩阵快速幂 下面给出矩阵快速幂的由来: 除了这些问题,我们对于斐波那契数列还可能涉及高精度数的处理问题。(2)卡特兰数 卡塔兰数是组合数学中一个常...
分类:
编程语言 时间:
2015-01-24 18:35:20
阅读次数:
237
斐波那契斐波那契迭代的斐波那契斐波那契有很多种写法,不会递归的同学就会这样写:int fib0(int n) { int a = 1; int b = 1; int c; if(n == 1 || n == 2) { return 1; } for (int i = 2; i 0) { return...
分类:
其他好文 时间:
2015-01-21 19:55:05
阅读次数:
185
题目:写一个函数,输入n,求斐波那契数列的第n项。
方法1:递归:
int fib2(int n)
{
if(n == 0)
return 0;
if(n == 1)
return 1;
return fib2(n-1)+fib2(n-2);
}
缺点:如果n比较大,那么递归程度比较深
方法2:
int fib(int n)
{
int ...
分类:
编程语言 时间:
2015-01-21 11:39:11
阅读次数:
222
斐波那契斐波那契1 迭代的斐波那契斐波那契有很多种写法,不会递归的同学就会这样写:int fib0(int n) { int a = 1; int b = 1; int c; if(n == 1 || n == 2) { return 1; } for (int i = 2; i 0) { retu...
分类:
其他好文 时间:
2015-01-19 22:20:55
阅读次数:
138
程序由Scheme语言编写,待会上别的语言实现。#lang racket;斐波那契对数法;筛选(define (fib n) (fib-iter 1 0 0 1 n)) (define (square x) (* x x)) (define (fib-iter a b p q count) (...
分类:
编程语言 时间:
2015-01-19 22:17:58
阅读次数:
201
递推思想本身并不跟函数有直接关系(虽然常常写在函数中)。
其基本思路为:
为了解决一个“大”问题,根据现实逻辑,如果能够找到同类问题的一个“最小问题”的答案(通常是已知的),并且根据已知算法,又可以因此得到比最小问题“大一级”问题的答案。 而且,依次类推,又可以得到再大一级问题的答案,最终就可以得到“最大那个问题”(即要解决的问题)的答案。
可见,该思想的过程依赖与2个条件:
1,...
分类:
其他好文 时间:
2015-01-18 09:19:01
阅读次数:
140