版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验一约瑟夫环问题实验报告通信二班 雷鹤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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度新能源汽车充电站场地租赁与运营管理合同12篇
- 2025年度图书销售合同范本二零二五年度4篇
- 二零二五年度高端餐厅特色菜品定制供应合同3篇
- 专业设备运输协议模板(2024版)
- 2024蓄水池建造与维护一体化服务合同3篇
- 专业用琴租赁协议(2024年度)版B版
- 2025年度茶叶仓储物流配送服务协议4篇
- 2025年度智慧城市建设物联网设备采购与安装服务协议3篇
- 2024限定版户外栏杆施工协议版B版
- 个性化汽车租赁协议模板2024版版
- 安徽省合肥市包河区2023-2024学年九年级上学期期末化学试题
- 《酸碱罐区设计规范》编制说明
- PMC主管年终总结报告
- 售楼部保安管理培训
- 仓储培训课件模板
- 2025届高考地理一轮复习第七讲水循环与洋流自主练含解析
- GB/T 44914-2024和田玉分级
- 2024年度企业入驻跨境电商孵化基地合作协议3篇
- 《形势与政策》课程标准
- 2023年海南省公务员录用考试《行测》真题卷及答案解析
- 桥梁监测监控实施方案
评论
0/150
提交评论