1、编写程序,模拟约瑟夫环(josephus)问题:n个人(编号为1,2,3,……,n (n>0) )按顺时针方向围坐一圈,每人持有一个正整数密码.开始时任意给出两个值:一个为首先报数的人的编号i (0

来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/25 04:14:09
1、编写程序,模拟约瑟夫环(josephus)问题:n个人(编号为1,2,3,……,n(n>0))按顺时针方向围坐一圈,每人持有一个正整数密码.开始时任意给出两个值:一个为首先报数的人的编号i(01、

1、编写程序,模拟约瑟夫环(josephus)问题:n个人(编号为1,2,3,……,n (n>0) )按顺时针方向围坐一圈,每人持有一个正整数密码.开始时任意给出两个值:一个为首先报数的人的编号i (0
1、编写程序,模拟约瑟夫环(josephus)问题:n个人(编号为1,2,3,……,n (n>0) )按顺时针方向围坐一圈,每人持有一个正整数密码.开始时任意给出两个值:一个为首先报数的人的编号i (0

1、编写程序,模拟约瑟夫环(josephus)问题:n个人(编号为1,2,3,……,n (n>0) )按顺时针方向围坐一圈,每人持有一个正整数密码.开始时任意给出两个值:一个为首先报数的人的编号i (0
#include
#include
typedef struct Lnode{
int data;
struct Lnode *next;} Lnode;
Lnode* create(int n)
{//建立共有n个结点的单循环链表h
int i;
Lnode *h,*p;//p为当前新生成结点的指针
Lnode *r=(Lnode *)malloc(sizeof(Lnode));//r为尾指针
r->data=n;h=r;//h为头指针
for(i=n-1;i>0;i--)//头插法建立链表
{p=(Lnode *)malloc(sizeof(Lnode));
p->data=i;
p->next=h;
h=p;
}
r->next=h ; //形成环
return h;
}
void jeseph(Lnode *p,int m)
{//从约瑟夫环中输出出列人的编号
Lnode *q;
int j=0;
printf("出队序列为:\n");
do{
j++;
if (j==m-1)
{
q=p->next;
p->next=q->next;
printf("%d ",q->data);
j=0;free(q);
}
p=p->next;
}while(p->next!=p);
printf("%d\n",p->data);
free(p);
}
void main()
{
Lnode *h;
int m,n;
printf("\n请输入n和m的值:");
scanf("%d,%d",&n,&m);
h=create(n) ;
jeseph(h,m);
}
执行程序结果为:
请输入n和m的值:12 , 4
出队序列为:4,8,12,5,10,3,11,7,6,9,2,1
执行程序结果为:
请输入n和m的值:7,20

约瑟夫 JOSEPH怎么样 1、编写程序,模拟约瑟夫环(josephus)问题:n个人(编号为1,2,3,……,n (n>0) )按顺时针方向围坐一圈,每人持有一个正整数密码.开始时任意给出两个值:一个为首先报数的人的编号i (0 编写程序模拟带括号的计算器 约瑟夫环(Joseph)问题数据结构的实验.c++编程~约瑟夫环(Joseph)问题的一种描述是:编号为1,2,…,n个人按顺时针方向围坐一圈,每人持有一个密码(正整数).一开始任选一个正整数作为报数 分别用数组和链表实现约瑟夫环.约瑟夫(Joseph)问题的一种描述是:编号为1,2,…,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数).一开始任选一个正整数作为报数上限值m,从第一个人 编写一程序能够模拟电子钟的效果 英语翻译总是把“jo” 译成 “约” “Joseph”也译成“约瑟夫”我觉得“John”应译成 “乔恩” 为什么John翻译成“约翰”而不是“强”?为什么Joseph翻译成“约瑟夫”而不是“琼瑟夫”? Joseph Joseph 编写程序,输入一个正整数n(1 编写程序,输入一个正整数n(1 请编写程序,输入正整数n,1 VB编写程序 用计算机模拟掷骰子游戏.编写程序统计掷N次后各点数出现的次数N尽量大,如100000次 编写一个模拟计算器的程序.要包括以下方法:加法,减法,乘法,除法.每个方法至少有两个参数. 随机数生成比较程序:用java语言 编写软件是eclitse程序要求:1) 制作一个随机数生成程序,.在程序中随机生成两个1-6之间的随机数,模拟两个骰子比较这两个随机数(即骰子的点数)是否一 编写程序,计算S 怎样编写这个程序