约瑟夫问题

2024-08-07 02:47

描述17世纪的法国数学家加斯帕在《数目的游戏问题》中讲的一个故事:15个教徒和15个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了一个办法:30个人围... 描述17世纪的法国数学家加斯帕在《数目的游戏问题》中讲的一个故事:15个教徒和15 个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了一个办法:30个人围成一圆圈,从第一个人开始依次报数,每数到第九个人就将他扔入大海,如此循环进行直到仅余15个人为止。问怎样排法,才能使每次投入大海的都是非教徒。这个故事的问题是经典的约瑟夫问题。 现在我们知道有n个教徒和非教徒,其中非教徒数为m,将他(她)们按从1到n的次序放置到圆圈中,报数为k,要将所有非教徒投入大海,请按递增次序给出非教徒在圆圈中的次序。输入每行是用空格分开的三个整数,第一个是 n, 第二个是 m,第三个是k ( 0 < m
1个回答
//约瑟夫环:
//这并告个程序有点小问题,你自己看看吧,现在没时间改了,起始位置有点问题

#include
#include
int flag;
typedef struct node
{int data;
struct node *next;
}LNode,* Linklist;
Linklist CreatFromHead() //链表的初始化
{ Linklist L=NULL,s;
LNode *r=NULL;
int x=1;
s=(Linklist)malloc(sizeof(LNode));
L = s;
r= L;

printf("请输入请厅丛输入报数的人数");
scanf_s("%d",&flag);
while(x!=flag+1)
{s=(Linklist)malloc(sizeof(LNode));
s->data=x;
r->next=s;
r=s;
x++;
}
s->next=L;

if(r!=NULL) r->next=NULL;
return L;
}
Linklist Getlist(Linklist L,int i) //链表的查找函数
{Linklist p;
int j;

p=L;j=0;
while(p->next!=NULL&&j { p=p->next;
j++;
}
if(i==j)return p;
else return NULL;
}
Linklist treat(Linklist L,Linklist s,int k,int i) //约瑟夫环算法
{
int j=0;
if(s==NULL)
{
s=L->扮蔽樱next;
}
while(j {
s=s->next;
j++;
if(s==NULL)
{
s=L->next;
}
}
return s;
}
int Del_Linklist(Linklist L,Linklist p) //链表结点删除函数
{Linklist s;
s=L;
while((s->next->data != p->data))
{
s=s->next;
}
s->next=s->next->next;
free(p);
return 1;
}
void main() //主函数
{Linklist L;
Linklist p,s;
int i,k,m,n;
L=CreatFromHead();
printf("请输入查找的元素位置");
scanf_s("%d",&i);
printf("请输入相隔的位置:");
scanf_s("%d",&k);
m=0;

s=Getlist(L,i);
printf(".");

while(m{
p=treat(L,s,k,i);

printf("%d\t",p->data);
s=p->next;

n=Del_Linklist(L,p);
m++;
}
}
相关问答
约瑟夫的简介
1个回答2024-02-09 12:35
公元37生于耶路撒冷,公元100年卒于罗马。约瑟夫是罗马帝国时期以为僧侣出身的犹太历史学家,也是一位犹太法利赛教徒(Pharisee)。 约公元64年游历罗马,在公元66年犹太起义前夕返回耶路撒冷...
全文
约瑟夫问题:
1个回答2024-03-18 17:56
约瑟夫环: 约瑟夫环问题的一种描述是:编号为1.2.3…….n的n个人按顺时针方向围坐一圈 ,每人手持一个密码(正整数),开始任意选一个整数作为报数上限值,从第一 个人开始顺时针自...
全文
约瑟夫问题
1个回答2024-06-11 09:12
你的问题是什么?若是编写程序要说明你要用的语言,以下是C的参考: #include #define N 30 int yuesefu1(int data[],int sum,int k) { ...
全文
约瑟夫问题
1个回答2024-07-01 22:43
#include #include struct node{ int data; struct node *next; }; int main(){ int i,j,k,m...
全文
约瑟夫问题
1个回答2024-07-02 17:23
约瑟夫环: 约瑟夫环问题的一种描述是:编号为1.2.3…….n的n个人按顺时针方向围坐一圈 ,每人手持一个密码(正整数),开始任意选一个整数作为报数上限值,从第一 个人开始顺时针自1开始...
全文
约瑟夫斯的著名的约瑟夫斯问题
1个回答2024-04-21 12:09
据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特後,39 个犹太人与Josephus及他的朋友躲到一个洞中罩棚,39个犹太人决定宁愿死也不要被人抓到,于是决定了一个自杀方式...
全文
约瑟夫环
1个回答2022-10-26 22:26
约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重...
全文
什么是约瑟夫环?
1个回答2022-10-17 18:28
约瑟夫问题的一种描述是:编号为1,2,……,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报...
全文
约瑟夫·熊彼特的主要作品
1个回答2024-02-25 13:34
《经济发展理论》1911年发表德文版,1912年英文版问世;这本书是他的成名作 。 《经济发展理论》第二版,1926年。有做大幅修改,加上副标“企业者的利润、资本、信贷、利息及景气循环”; 《景气...
全文
约瑟夫的著作有哪些?
1个回答2024-05-10 07:07
《犹太古史》>(Antiquities of the Jews)、《犹太战记》(History of the Jewish War)
热门问答