博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
循环队列的运用---求K阶斐波那契序列
阅读量:5037 次
发布时间:2019-06-12

本文共 2315 字,大约阅读时间需要 7 分钟。

问题描述:

  试利用循环队列编写k阶斐波那契序列中前n+1项的算法,要求满足:f(n)<=max而f(n+1)>max,其中max为某个约定的常数。(注意:本题所用循环队列的容量仅为K,则在算法执行结束时,留在循环队列中的元素应是所求K阶斐波那契序列中的最后k项)。

问题分析:

 这道题可以这样想,循环队列满时,可继续将元素入队列,覆盖以前的值即可。

代码:

View Code
1 #include
2 #include
3 #define k 8 4 typedef struct{ 5 int *base; 6 int front; 7 int rear; 8 }queue; 9 void InitQueue(queue &q){10 q.base=(int *)malloc(k*sizeof(int));11 if(!q.base)12 printf("存储分配失败");//存储分配失败13 q.front=q.rear=0;14 }15 void EnQueue(queue &q,int i)16 {17 q.base[q.rear]=i;18 q.rear=(q.rear+1)%k;19 }20 void DeQueue(queue &q,int &i)21 {22 i=q.base[q.front];23 q.front=(q.front+1)%k;24 }25 int QueueLength(queue &q)26 {27 return (q.rear-q.front+k)%k;28 }29 int fun(int m)30 {31 if(m==0)32 return 0;33 if(m==1)34 return 1;35 else36 return fun(m-1)+fun(m-2);37 }38 int main()39 {40 queue q;41 int e;42 InitQueue(q);43 int s,j=0,count=0,max;44 printf("请输入约定的最大数:");45 scanf("%d",&max);46 for(int i=0;;i++)47 {48 s=fun(i);49 if(s<=max)50 {51 EnQueue(q,s);52 j=i;53 ++j;54 s=fun(j);55 }56 if(s>max)57 break;58 59 }60 int len=QueueLength(q);61 while(count

总结:

  还好,自己最后发现问题所在解决了。

更正:

#include
#include
#define k 8typedef struct{ int *base; int front; int rear;}queue;void InitQueue(queue &q){ q.base=(int *)malloc(k*sizeof(int)); if(!q.base) printf("存储分配失败");//存储分配失败 q.front=q.rear=0;}void EnQueue(queue &q,int i){ q.base[q.rear]=i; q.rear=(q.rear+1)%k;}void DeQueue(queue &q,int &i){ i=q.base[q.front]; q.front=(q.front+1)%k;}int QueueLength(queue &q){ return (q.rear-q.front+k)%k;}int fun(int m){ if(m==0) return 0; if(m==1) return 1; else return fun(m-1)+fun(m-2);}int main(){ queue q; int e; InitQueue(q); int s,j=0,count=0,max; printf("请输入约定的最大数:"); scanf("%d",&max); for(int i=0;;i++) { s=fun(i); if(s<=max) { if(i>=k) DeQueue(q,e); EnQueue(q,s); j=i; ++j; s=fun(j); } if(s>max) break; } int len=k; if(i

 

转载于:https://www.cnblogs.com/wj204/archive/2013/04/29/3050837.html

你可能感兴趣的文章
16.RDD实战
查看>>
MainFrame知识小结(20120210)—dfsort/syncsort中的数据类型
查看>>
D - Flip tile
查看>>
Java连接RabbitMQ之创建连接
查看>>
开户vim编程之--cscope支持
查看>>
python数据类型图解
查看>>
C#微信登录-手机网站APP应用
查看>>
HTML5实践 -- iPhone Safari Viewport Scaling Bug
查看>>
一位数据挖掘成功人士 给 数据挖掘在读研究生 的建议
查看>>
Python3.6.0安装
查看>>
hdu1049
查看>>
H5项目常见问题及注意事项
查看>>
索尼(SONY) SVE1512S7C 把WIN8降成WIN7图文教程
查看>>
时间模块 && time datetime
查看>>
jquery自动生成二维码
查看>>
spring回滚数据
查看>>
新浪分享API应用的开发
查看>>
美国专利
查看>>
【JavaScript】Write和Writeln的区别
查看>>
百度编辑器图片在线流量返回url改动
查看>>