数据结构入门篇:约夫瑟斯数据环问题
来源:互联网 发布:剑灵灵剑士卡刀宏数据 编辑:程序博客网 时间:2024/06/06 00:15
关于数据结构,在大学本科并未接触,目前才开始接触学习。
关于这个问题,还记得刚刚毕业那会,找工作面试的时候,有一家公司的笔试大题就是约夫瑟斯数据环,然而当时并未接触这个,所以,悲剧了
其实这个很简单,基本上学习了数据结构 之后必然会这个,可谓是数据结构入门的经典之作!
问题描述:
经典Josephus问题:
有n个人围坐有个圆桌,从第s个开始报数,报到m的人出列,然后从出列的下一个人继续报数,直到所有人都出列。
对于给定的任意n,s,m,求按次序出列的n个人的序列。
知识储备:线性表(顺序表,单链表,双链表,循环链表)
顺序表解法:
#define Maxnum 100
#define FALSE 0
#define TRUE 1
typedef int DataType;
void josephus_seq(PSeqList palist,int s,int m)
{
int s1,i,w;
s1=s-1;
for(i=palist->n;i>0;i--)
{
s1=(s1+m-1)%i;
w=palist->element[s1]; //求出下标为S1的元素的值
printf("Out element!"); //元素出列
delete_seq(palist,s1); //删除出列的元素
}
}
main()
{
PSeqList jos_alist;
int i,k,n,s,m;
printf("\n please input the value(<100)of n =");
scanf("%d",&n);
printf("please input the values of s=");
scanf("%d",&s);
printf("please input the values of m=");
scanf("%d",&m);
jos_alist=createNullList_seq(n); //创建新的空顺序表
if (jos_alist!=Null)
{
for(i=0;i<n;i++) //线性表赋值
insertpre_seq(jos_alist,i,i+1);
insertpre_seq(jos_alist,s,m);
free(jos_alist->element);
free(jos_alist);
}
}
约夫瑟斯数据环问题就到这了,后续还将继续学习数据结构,陆续更新ING;
Thanks for your reading.
- 数据结构入门篇:约夫瑟斯数据环问题
- 【数据结构入门】概念篇
- 【算法设计与数据结构】二分法解决最大值最小化问题——入门篇
- 数据结构-----约瑟夫环问题
- 数据结构:约瑟夫环问题
- [数据结构]约瑟夫环问题
- 数据结构 约瑟夫环问题
- Python数据分析入门(一)-Pandas数据结构(Series)
- 数据结构入门
- 数据结构入门
- 数据结构入门
- 数据结构入门
- 数据结构入门
- 数据结构入门
- 数据结构入门
- 《数据结构与算法》学习之入门篇
- R语言数据结构介绍-入门篇
- 数据结构值约瑟夫环问题
- 开源和自由
- Spring注解
- 排序算法
- css引入字体样式
- web开发中审查元素编程思路
- 数据结构入门篇:约夫瑟斯数据环问题
- 深入理解ES7的async/await
- 设计模式综述
- Spring学习笔记之使用远程服务
- Unity Editor 基础篇(十一):MenuItem属性
- Qt学习笔记第1篇(Qt简介)
- 获取View的坐标和各种距离
- 样式和主题(Style and Theme)详解
- es6语法快速上手