利用C语言循环队列编写求k阶斐波那契数列中前n 1项(f0, f1, …, fn)的算法

[复制链接]
查看11 | 回复3 | 2011-11-4 12:52:23 | 显示全部楼层 |阅读模式
要求满足:fn=max而fn1max,其中max为某个约定的常数。所用循环队列的容量仅为k,则在算法执行结束时,留在循环队列中的元素应是所求k阶斐波那契序列中的最后k项fn-k1,…,fn。
回复

使用道具 举报

千问 | 2011-11-4 12:52:23 | 显示全部楼层
#includestdio.h#definemaxsize50main(){intm,n,d,i,count;intA[maxsize];printf(\"\\n请输入n,m的值,以逗号分开:\");scanf(\"%d,%d\",for(i=0;in;i)A=i1;printf(\"出队前:\");for(i=0;in;i)printf(\"%d\",A);printf(\"\\n\");printf(\"出队后:\");count=0;d=0;while(dn)for(i=0;in;i)if(A!=0){count;if(count==m){printf(\"%d\",A);A=0;count=0;d;}}printf(\"\\n\");}
回复

使用道具 举报

千问 | 2011-11-4 12:52:23 | 显示全部楼层
#includestdio.h#includeconio.h#defineenoughsize100typedefstruct{int*base;intfront;intrear;}SqQueue;intAddSum(intn,int*q){intsum=0;inti;for(i=0;iN;I)sum=q;returnsum;}voidmain(){SqQueueQ;intk,max,i,n,*store;printf(\"请输入此斐波那契的阶数:\");scanf(\"%d\",printf(\"请输入边界数:\");scanf(\"%d\",Q.base=(int*)malloc(k*sizeof(int));store=(int*)malloc(enoughsize*sizeof(int));if((!Q.base)||(!store)){printf(\"Error!\");return;}for(i=0;iK-1;I){store=0;Q.base=0;}store[k-1]=1;Q.base[k-1]=1;store[k]=AddSum(k,Q.base);Q.front=0;Q.rear=k-1;n=k;while(store[n]=max){Q.rear=(Q.rear1)%k;Q.base[Q.rear]=store[n];n;store[n]=AddSum(k,Q.base);}printf(\"Thefirst%d%s%d%c%s\",n,\"numbersarelessthan\",max,\'.\',\"\\n\");printf(\"Thenumbersare:\\n\");for(i=0;iN;I)printf(\"%d%c\",store,\'\');printf(\"\\n\");}赞同
回复

使用道具 举报

千问 | 2011-11-4 12:52:23 | 显示全部楼层
asgbsfdbbaddfab赞同
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行