版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验一约瑟夫环问题实验报告通信二班 雷鹤20100820207 李春阳 20100820208 李孟琪20100820209问题描述设编号为1-n的n(n>0)个人按顺时针方向围成一圈.首先第1个人从1开始顺时针报数.报m的人(m为正整数).令其出列。然后再从他的下一个人开始,重新从1顺时针报数,报m的人,再令其出列。如此下去,直到圈中所有人出列为止。求出列编号序列。二、需求分析1、需要基于线性表的基本操作来实现约瑟夫问题2、需要利用数组来实现线性表3、测试用例输入:10,3输出:36927185104三、概要设计 抽象数据类型为实现上述程序的功能,应以整数存储用户的输入,以及计算出的结果。算法的基本思想利用数组来代表一个环,然后模拟报号出圈的过程,直到所有人都出圈。程序的流程程序由三个模块组成:输入模块:完成两个正整数的输入,存入变量n和m中。计算模块:计算这n个数的输出序列输出模块:屏幕上显示这n个数的输出序列。四、详细设计程序代码:#include<iostream>usingnamespacestd;main(){ intn,m,k,j; //n为总人数,m为出列编号 cin>>n>>m; int*listArray=newint[n]; //将n个人放在大小为n的数组中 int*outArray=newint[n]; //用以存放依此出列的人的编号 for(inti=0;i<n;i++) listArray[i]=i+1; //对n个人进行编号 for(i=1,j=k=0;k<n;j=++j%n) //i为报数编号,初始值为1,循环访问数组元素,即数组元素循环报数 { if(listArray[j]!=0) { if(i==m) //报数编号和出列编号相同时 { outArray[k]=listArray[j];//将该元素放置到出列数组里,并输出 cout<<outArray[k]<<""; k++; listArray[j]=0; //将出列元素置0 i=1; //下一个元素从1开始重新报数 } else i++; //报数编号与出列编号不同时,继续报数 } } cout<<'\n'; return0;}物理数据类型队列元素及出列序列都以整型数组方式存储算法的具体步骤 将队列里的元素编号循环访问数组元素第一个元素从1开始报数,报数编号与出列编号相同时出列,并将该元素置为0下一个元素重新从1开始报数,依次循环输入和输出的格式输入格式:n,m输出格式1:在字符界面上输出这n个数的输出序列输出格式2:将这n个数的输出序列写入到文件中五、测试结果其他程序代码程序1#include<stdio.h>#include<stdlib.h>typedefinttype;//结点数据域类型为整型typedefstructLNode//结点类型定义{structLNode*next;//结点的指针域typea;//结点的数据域}link;voidinitLink(link*&l){l=(link*)malloc(sizeof(link));//在内存的动态存储区申请链表长度的连续空间//初始化链表l->next=l;}voidinsert(link*&l)//在其后插入新成员{link*p;p=(link*)malloc(sizeof(link));p->next=l->next;l->next=p;}voiddestory(link*&l)//删除其后面的元素{link*t;t=l->next;l->next=l->next->next;free(t);}intmain(){intm,n;charp;while(scanf("%d%c%d",&n,&p,&m)!=EOF){link*head;link*temp;initLink(head);temp=head;for(inti=0;i<n;i++){insert(temp);temp->next->a=i+1;//创建链表temp=temp->next;}temp->next=NULL;temp=head;while(head->next!=NULL){for(inti=1;i<m;i++)//模拟约瑟夫过程{ { if(temp->next==NULL)temp=head; }temp=temp->next;}if(temp->next==NULL){printf("%d",head->next->a);destory(head);}else{printf("%d",temp->next->a);destory(temp);}}printf("\n");}}程序2#include<iostream>usingnamespacestd;voidmain(){ intn,m,a[100001],k,i,j; cin>>n; if(n>100000) { cout<<"请重输"; return; }cin>>m; for(i=1;i<=n;i++) { a[i]=1; } j=0; k=0; for(i=1;i<=n;i++) { if(a[i]==1) { j=j+a[i]; if(j==m) { j=0; a[i]=0; k++; cout<<i<<""; } } if(i==n) i=0; } }七、实验心得李孟琪:该实验利用数组实现线性表,算法简便,但产生很多不必要的消耗,下一步可以尝
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汽车租赁收益管理中存量控制的优化策略与实践研究
- 2026年校园安全管理考试真题及答案解析
- 地震应急演练指导技师考试试卷及答案
- 城市井盖智能监测技师考试试卷及答案
- 2026年教师法知识竞赛试题及答案
- 2026年物业管理师考试真题及答案
- 国企招投标廉洁监督技术指南(2025年)
- 2026年公共营养师考试真题及答案
- 项目分包成本控制计划
- 卫生管理考核制度
- 2025泌尿外科学(正高)考试试题及答案(6Q)答案和解析
- 圆柱、圆锥应用题(专项突破)-小学数学六年级下册人教版(含解析)
- 内科护理副高职称答辩题库及答案
- 建筑施工安全检查及隐患排查标准
- 中国心房颤动管理指南(2025)解读
- 小学语文大单元教学讲座
- 2025年江苏省中职职教高考统考英语试卷真题(含答案详解)
- SH∕T3022-2024石油化工设备和管道涂料防腐蚀设计标准
- 城市社会学 课件 第0-5章 绪论、城市- 城市社会组织
- 学堂在线 智能时代下的创新创业实践 期末考试答案
- 防雷安全培训知识
评论
0/150
提交评论