待调试 约瑟夫问题
来源:互联网 发布:.net求数组中元素相加 编辑:程序博客网 时间:2024/05/01 11:43
/*约瑟夫问题 n只猴子围成一圈选大王(编号1~n),开始数数,数到m 的猴子退出圈外,剩下的猴子再接着从1开始数,这样直到圈内只剩下一只猴子时。这只猴子就是国王了。输入n m . 输入最后一行是0 0 对每行输入输出对应的猴王编号。*//*使用循环队列 因为可以克服假溢出的现象*/#include <stdio.h>#include<string.h>//#include<queue>//#define maxsize 100typedef struct queue{int *q; //数组头指针int head,tail; //队列的头、尾指针 int queuesize; //定义数组大小}SqQueue;void InitQueue(SqQueue *q) //队列初始化{ q.head=0;q.tail=0;q.queuesize=8;q.q=(int *)malloc(sizeof(int) * q.queuesize); //分配内存}void EnQueue(SqQueue *q,int key) //入队{ int tail=(q.tail+1)%q.queuesize;if(tail==q.head){printf("the queue is filled");}elseq.q[q.tail]=key;q.tail=tail;}int DeQueue(SqQueue *q) //出队{int temp;if(q.tail==q.head){printf("the queue is empty\n");}else{temp=q.q[q.head];q.head(=q.head+1)%q.queuesize;}return temp;}void main(){int n,m,A;int a[];SqQueue *q;scanf("%d %d",&n,&m);InitQueue(*q);q.queuesize=n+1;for(int i=1;i<=n;i++){EnQueue(q,a[i]); //所有元素入队;}for(i=1;i<=(m-1);i++){ int t=DeQueue(q); EnQueue(q,t); while(i==m) {deleteDeQueue(q); //q.temp; } if((q.head+1)%q.queuesize==q.tail) //队列自身一个元素时 { A=DeQueue(q); break;}}printf("%d",A);}
0 0
- 待调试 约瑟夫问题
- 约瑟夫斯问题(约瑟夫环)?待解决
- <数据结构> 约瑟夫问题 (待补充完整)------------代表ADT小组
- 数据结构 实验二:解决约瑟夫问题(待补充)
- 约瑟夫问题、约瑟夫环
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 0-1背包问题与完全背包问题C++实现 动态规划
- 2015年3月21
- 关于物料间的替代问题
- 【WIN32之旅】WINDOWS错误处理与参考(二)
- 公交车路线查询系统后台数据库设计--关联地名和站点
- 待调试 约瑟夫问题
- 公交车路线查询系统后台数据库设计--引入步行路线
- 未能正确加载“Microsoft.VisualStudio.Editor.Implementation.EditorPackage”包
- Leetcode: Remove Nth Node From End of List
- 公交车路线查询系统后台数据库设计--换乘算法改进与优化
- 策略模式
- core data 入门
- ACM对拍程序过程
- iOS 分别使用GDataXML和KissXML生成xml