实验题目:约瑟夫环问题:设编号为1,2,3,……,n的n(n>0)个人按顺时针方向围坐一圈,m为任意一个正整数。从第一个人开始顺时针方向自1起顺序报数,报到m时停止并且报m的人出列,再从他的下一个人开始重新从1报数,报到m时停止并且报m的人出列。如此下去,直到所有人全部出列为止。要求设计一个程序模拟此过程,对任意给定的m和n,求出出列编号序列。

#include<iostream>
#define MAXSIZE 50
using namespace std;
typedef int Elemtype;
// 定义顺序表结构体
typedef struct
{Elemtype data[MAXSIZE];int length;
}Sqlist;
//另一种结构体类型名方式*Sqlist
//typedef struct
//{
//  Elemtype data[MAXSIZE];
//  int length;
//}*Sqlist;//创建顺序表思想:直接把有几个人复制到顺序表中,没有书上那种的原因是书上是用的数组
void CreateList(Sqlist *& s)//另一种结构体时void CreatList(Sqlist  s)
{int n;cout << "输入共有几个人" << endl;cin >> n;cout << " 最开始的编号为:" << endl;for (int i = 0; i < n; i++){s->data[i] = i + 1;cout << s->data[i] << " ";s->length = n;}cout << endl;
}
//初始化线性表
void InitList(Sqlist *& L)//另一种结构体时void InitList(Sqlist  L)
{L = (Sqlist*)malloc(sizeof(Sqlist));L->length = 0;
}
// 实现约瑟夫环的算法:1.(t+m-1)%s->length, 这个s->length表示的是每次出列后参数顺序表的长度都会变化,通过%来实现环的意思跟环队形有点类似
//2.每次出列一个后,所有后面的数据向前一位顶替原来出列的数,形成一个新的表
//3.一共循环s->length次
void Joseph(Sqlist * s,int m)
{int t=0;int i,j;cout << "出列序列" <<endl;for (i = s->length; i >= 1; i--){t = (t + m - 1) % i;//关键cout << s->data[t] << " ";for ( j = t + 1; j <= i - 1; j++)//关键{s->data[j - 1] = s->data[j];}}cout << endl;
}
//实现约瑟夫环的算法:1.(t+m-1)%s->length, 这个s->length表示的是每次出列后参数顺序表的长度都会变化,通过%来实现环的意思跟环队形有点类似
//2.每次出列一个后,所有后面的数据向前一位顶替原来出列的数,形成一个新的表
//3.一共循环s->length次
//void Joseph(Sqlist* s, int m)//另一种结构体时(Sqlist L)
//{
//  int t = 0;
//  cout << "出列序列" << endl;
//  for (s->length;  s->length>= 1; s->length--)
//  {
//      t = (t + m - 1) % s->length;//关键
//      cout << s->data[t] << " ";
//
//      for (int j = t + 1; j <= s->length - 1; j++)//关键
//      {
//          s->data[j - 1] = s->data[j];
//      }
//  }
//  cout << endl;
//}
int main()
{Sqlist *L;//另一种结构体时Sqlist L;int m;InitList(L);CreateList(L);cout << "想要报的m数:" << endl;cin >> m;Joseph(L, m);return 0;
}

实验题目:约瑟夫环问题:设编号为1,2,3,……,n的n(n>0)个人按顺时针方向围坐一圈,m为任意一个正整数。从第一个人开始顺时针方向自1起顺序报数,报到m时停止并且报m的人出列,再从他的下一个人相关推荐

  1. 3、约瑟夫问题的一种描述是:编号为1,2,……,n的n个人按顺时针方向坐一圈,每人持有一个密码(正整数)。一开始任选一个作为报数上限值m,从第一个开始顺时针自1开始顺序报数,报到m是停止报数。报m的人

    题目: /* 3.约瑟夫问题的一种描述是:      编号为1,2,--,n的n个人按顺时针方向坐一圈,每人持有一个密码(正整数).一开始任选一个作为报数上限值m, 从第一个开始顺时针自1开始顺序报数 ...

  2. 题目98-4:n个人(n<=100)围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人再出圈,……,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。

    题目转载:http://python.wzms.com/s/1/103 题目描述: n个人(n<=100)围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人再 ...

  3. n个人围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数, 数到m的人再出圈,……依次类推, 直到所有的人都出圈,请输出依次出圈人的编号.

    88,n个人围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数, 数到m的人再出圈,--依次类推, 直到所有的人都出圈,请输出依次出圈人的编号. 输入 n m 输出 出圈的编号 ...

  4. 约瑟夫环!编 号是1,2,??,n的n个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个仍开始顺时针方向 自1开始顺序报数,报到m时停止报数。

    流程: ⑴建立模型,确定存储结构: ⑵ 对任意 n个人,密码为 m,实现约瑟夫环问题: ⑶出圈的顺序可以依次输出,也可以用一个数组存储. 示意图: 设计: 首先,设计实现约瑟夫环问题的存储结构.由于约 ...

  5. 关于当一个C#工程移植到另一台机子上(win7)上时,程序报错。dll没有被指定在Windows上运行,或者它包含错误。请尝试使用原始安装媒体重新安装程序。。。。。。...

    , 解决方法:通过从网上重新下载dll文件 拷贝到报错的目录下,替换掉原有的dll,可以正确运行. 转载于:https://www.cnblogs.com/zhayunjia/p/3748811.ht ...

  6. 编程用莱布尼茨级数公式计算π值,输入一个小数作为阈值,当最后一项的绝对值小于给定阈值时停止计算并输出得到的π值。...

    可以使用莱布尼茨级数公式计算 $\pi$ 的代码如下: import mathdef calculate_pi(threshold):"""Calculate pi us ...

  7. 循环链表,约瑟夫环问题

    约瑟夫(Josephus)环问题:编号为1,2,3,-,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数).一开始任选一个正整数作为报数的上限值m,从第一个人开始按顺时针方向自1开始顺序报数, ...

  8. 约瑟夫环c语言代码顺序存储,顺序表实现约瑟夫环地问题,C语言.doc

    顺序表实现约瑟夫环地问题,C语言 计算机科学与工程学院 PAGE PAGE 2 <算法与数据结构>试验报告 计算机科学与工程学院 <算法与数据结构>试验报告[一] 专业班级 1 ...

  9. 数据结构与算法 实验报告一 约瑟夫环(单循环链表)

    实验内容: 约瑟夫环求解. 编号为1,2,....,N的N个人按顺时针方向围坐一圈,每人持有一个密码(正整数).一开始任选一个正整数作为报数上限值M,从第一个人开始按顺时针方向自1开始顺序报数,报到M ...

最新文章

  1. Runtime.getRuntime().exec();里面产生停滞(阻塞,blocking)
  2. 直播源码:直播+内容营销新趋势
  3. location.hash属性介绍
  4. python Gevent – 高性能的Python并发框架
  5. linux下如何实现mysql数据库每天自动备份定时备份
  6. android gradle自定义钉钉群提醒
  7. 后端技术:消息队列MQ/JMS/Kafka相关知识介绍
  8. UML九种图 之 包图和对象图
  9. System V 共享内存 和 系列函数
  10. 集成产品开发过程及其概念模型
  11. 教室录播系统方案_学校教室录播系统解决方案
  12. 为何腾讯一直在推广“低配版”的QQ
  13. 计算机网络之A、B、C类网络地址
  14. L2-029 特立独行的幸福 (25 分)
  15. Win10更新后桌面右键反应慢的问题
  16. unity游戏开发为什么工作这么难找
  17. 计算机文档考试题目及答案,计算机word考试题及答案解析
  18. JSD-2204-API-线程API-线程锁-Day07
  19. ExifTool文件鉴定器
  20. echarts x 起始_echarts实现获取datazoom的起始值(包括x轴和y轴)

热门文章

  1. MeterSphere案例分享丨88完美邮箱全面提升产品质量的落地指南
  2. WebView重定向和回退栈的问题,goBack不会回退的问题
  3. Dilated Residual Networks
  4. 计算机掷骰子吗?关于随机数的一些细节
  5. OCP 11G 053题库解析汇总链接(1-200)
  6. 0xFFFF的Debug
  7. 基于人脸识别的课堂签到管理系统【学习三】
  8. 辨大势定内局,解析新时代下的企业新刚需
  9. win10停止更新_烦人的Windows10更新,教你如何有效的关闭。
  10. 创建facebook_我如何重新创建Facebook的微交互以进行功能发现