ppt Fibonacii数列的第n项------记忆式搜索

#include <stdio.h>
#define MAX 50+1
int a[MAX];
int fib(int n)
{

if (a[n]==-1)     return   a[n]=fib(n-1)+fib(n-2);
           else          return   a[n];
}
int main( )
{

int i,n;
for(i=1; i<MAX; i++)
a[i]=-1;
a[0]=a[1]=1;
scanf("%d",&n);
printf("%d\n" ,fib( n ) );
}

*******************************************************************

#include <stdio.h>
#define MAX 50+1
int a[MAX];
int fib(int n)
{

if (a[n]!=-1)          a[0]=a[1]=1;
if (a[n]==-1)     return a[n]=fib(n-1)+fib(n-2);
       else            return a[n];
}
int main( )
{ int i,n;
for(i=1; i<MAX; i++)
a[i]=-1;

scanf("%d",&n);
printf("%d\n" ,fib( n ) );
}

ppt Fibonacii数列的第n项------记忆式搜索

时间: 2024-10-12 15:42:05

ppt Fibonacii数列的第n项------记忆式搜索的相关文章

ppt Fibonacii数列的第n项------动态规划DP

#include <stdio.h>#define MAX 50+1int fib(int n){ int i,a[MAX]; a[1]=a[2]=1; for (i=3; i<=n; i++)               a[i]=a[i-1]+a[i-2];          return a[n];}void main( ){ int n; scanf("%d",&n); printf("%d\n" ,fib( n ) );} ppt

ppt Fibonacii数列的第n项------普通递归

#include <stdio.h>int fib(int n){ if (n<=1)    return 1; else             return fib(n-1)+fib(n-2); }int main( ){ int n; scanf("%d",&n); printf("%d\n" ,fib( n ) );} ppt Fibonacii数列的第n项------普通递归

(RQoj 15 采药------rwkj 10.1.5.253 1447) 记忆式搜索 2

#include <iostream>#include <string.h>using namespace std;int dp[105][1005], w[105],v[105],T,M,;int max(int x,int y) { return x>y?x:y; }int f(int x,int y){ int t; if (dp[x][y]!=-1) return dp[x][y]; if ( x==M+1 || y==0 ) return dp[x][y]=0; e

(RQoj 15采药------rwkj 10.1.5.253 1447) 记忆式搜索 1

#include <iostream>using namespace std;int dp[105][1005],w[105],v[105] ; int max(int a,int b) { return a > b ? a : b; }int f(int x,int y){ int t ; if(dp[x][y]!=-1) return dp[x][y] ; if(x==0 || y==0 ) return dp[x][y]=0 ; else { t=f(x-1,y) ; if(y&g

poj 最长公共子序列 1458 记忆式搜索

#include <iostream>using namespace std;#include<cstring>#define N 1005char s1[N],s2[N];int dp[N][N];int max(int a,int b) {  return a>b ? a:b ;} int f(int x ,int y){ if(dp[x][y]!=-1) return dp[x][y]; if(x==0||y==0)    return dp[x][y]=0; else

nyist 17 -----记忆式搜索------Accept

//记忆式搜索 #include <iostream>#include<stdio.h>#include<string.h>using namespace std;char a[10002];int b[10002];int n,ans;int f(int x){ int i,t; if(b[x]>0) return b[x]; b[x]=1; for(i=0;i<=x-1;i++) { t=f(i); if(a[i]<a[x] &&

poj 2533 poj 2533 poj 2533 记忆式搜索1 2

#include <iostream>#include <cstring>#define N 10005using namespace std;int a[N],b[N],n,maxlen=1;int f( int x){ int i,m,t; if ( b[x]>0 ) return b[x]; m=1; for (i=0;i<x; i++) {    t=f(i);         if (a[x]>a[i])  m=max(m,f(i)+1);       

BZOJ 2656 ZJOI 2012 数列(sequence) 高精度+记忆化搜索

题目大意:定义个一序列,f[i] = f[i / 2] (i % 2 == 0);f[i] = f[i / 2] + f[i / 2 + 1] (i % 2 == 1);求这个数列的第m项(m <= 10 ^ 100) 思路:数据范围高精度没跑了.记得之前做过这个题的弱化版,似乎是没有高精度的记忆化搜索,这个题就是加个高精度. CODE: #include <map> #include <cstdio> #include <cstring> #include &l

BZOJ 2656 ZJOI2012 数列(sequence) 高精度+记忆化搜索

题目大意:给定一个数列的通项公式,求数列的某一项 高精度+记忆化搜索没说的 其实不用记忆化搜索的但是既然写完了就写完了吧 顺便学习了一下友元函数之类的东西- - #include <map> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; class Big_Int{ private: int nu