码迷,mamicode.com
首页 > 其他好文 > 详细

Fibonacci斐波拉契数列----------动态规划DP

时间:2014-08-11 23:57:53      阅读:530      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   io   strong   for   

n==10 20 30 40 50 46 体验一下,感受一下,运行时间

#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) );
}

 

 

 

先 n==10 20 30 40 50 46 体验一下,感受一下,运行时间

再    提交一下zjut 1029 超时

bubuko.com,布布扣

bubuko.com,布布扣

 

// Time Limited Exceeded

#include <stdio.h>
int fib(int n)
{

if (n<=1) return 1;
else return fib(n-1)+fib(n-2);
}
int main( )
{
int n;
while(scanf("%d",&n))
printf("%d\n" ,fib(n) );
}

 

 普通递归

由上向下,,由大的 算小的

 纯递推

 //Accept

#include <stdio.h>
int fib[50]={0,1}; //使用打表
void init()
{
int i;
for(i=2;i<50;i++) //纯递推 for循环
fib[i]=fib[i-1]+fib[i-2]; // 由上到下 因为大的 算小的
}


int main( )
{
int n;
init();
while(scanf("%d",&n))
printf("%d\n" ,fib[n] );
}

 

 

 

  记忆式搜索

递归计算之前,判断前面是否计算过

有小的(数组---保存起来)推大的

 

 //Accept
#include <stdio.h> // 记忆式搜索
int a[50]={0,1};
int fib(int n)
{
if(n<=2)              return a[n]=1;             // 1赋值给 a[n]                           //return   1;

else if(a[n]==0)   return a[n]=fib(n-1)+fib(n-2);             //没有算   先算 右边fib(n-1)+fib(n-2)          ,,在保存 a[n]
else return a[n];                                     // 否则就  算过了,,,直接用它a[n]

}


int main( )
{
int n;

while(scanf("%d",&n)!=EOF)
printf("%d\n" ,fib(n) );
}

 

Fibonacci斐波拉契数列----------动态规划DP,布布扣,bubuko.com

Fibonacci斐波拉契数列----------动态规划DP

标签:style   blog   http   color   使用   io   strong   for   

原文地址:http://www.cnblogs.com/2014acm/p/3905738.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!