题目内容 (请给出正确答案)
[主观题]

设有n个人围坐在一个圆桌周围,现从第s个人开始报数,数到第m的人出列,然后从出列的下一个人重新开始报数,数

到第m的人又出列……如此反复,直到所有的人全部出列为止。对于任意给定的n,s和m,求出按出列次序得到的n个人员的序列。试将Josephus问题的求解过程在计算机中用顺序表结构加以实现。

查看答案
如搜索结果不匹配,请 联系老师 获取答案
您可能会需要:
您的账号:,可能会需要:
您的账号:
发送账号密码至手机
发送
更多“设有n个人围坐在一个圆桌周围,现从第s个人开始报数,数到第m…”相关的问题

第1题

设n个人围坐在一个圆桌周围,现在从第s个人开始报数,数到第m个人,让他出局;然后从出局的下一个
人重新开始报数,数到第m个人,再让他出局,如此反复直到所有的人全部出局为止。下而要解决的Josephus问题是:对于任意给定的n, s和m, 求出这n个人的出局序列。请以n=9, s=1,m=5为例, 人工模拟Josephus问题的求解过程以求得问题的解。

点击查看答案

第2题

阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。 [说明] 这是一个求解Josephus

阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。

[说明]

这是一个求解Josephus问题的函数。用整数序列1,2,3…,n表示顺序围坐在圆桌周围的人,并采用数组表示作为求解过程中使用的数据结构。Josephus问题描述,设n个人围坐在一个圆桌周围,现在从第s个人开始报数,数到第m个人,让他出局;然后从出局的下一个人重新开始报数,数到第m个人,再让他出局,…如此反复直到所有的人全部出局为止。

[C函数]

void Josephus(int A[],int n,s,m)

(int i,j,k,temp;

if(m==O){

printf("m=0是无效的参数!\n");

return;

}

for(i=0;i<n;i++) A[i]=i+1; /*初始化,执行n次*/

i= (1) /*报名起始位置*/

for(k=n;k>1;k-){

if((2)) i=0;

i=(3) /*寻找出局位置*/

if(i!=k-1){

tmp=A[i];

for(j=i;J<k-1;j++) (4);

(5);

}

}

for(k=0;k<n/2;k++){

tmp=A[k];A[k]=A[n-k+1];A[n-k+1]=tmp;

}

}

点击查看答案

第3题

试编写一个求解Josephus问题的函数。用整数序列1,2,3.….n表示顺序围坐在圆桌周围的人,并采用数
组表示作为求解过程中使用的数据结构。然后使用n=9,s=l,m=5,以及n=9,s=1,m=0,或者n=9,s=1,m=10作为输人数据,检你的程序的正确性和健壮性。

点击查看答案

第4题

15人围坐在一个圆桌周围,如果B拒绝挨着A坐,有多少种围坐方式?如果B只拒绝坐在A的右侧,又有多少种围坐方式?
点击查看答案

第5题

25个人围坐在一张圆桌旁,任取3人去盛菜,这3人中至少有2人相邻的概率是多少?

A.67%

B.46%

C.33%

D.17%

点击查看答案

第6题

编写一个程序,求解约瑟夫(Josephus)问题。约瑟夫问题描述为: n个小孩围成一圈做游戏,给定一个数m,现从第s个小孩开始,顺时针计数,每数到m,该小孩出列,然后从下一个小孩开始,当数到m时,该小孩出列,如此反复,直到最后一个小孩。
编写一个程序,求解约瑟夫(Josephus)问题。约瑟夫问题描述为: n个小孩围成一圈做游戏,给定一个数m,现从第s个小孩开始,顺时针计数,每数到m,该小孩出列,然后从下一个小孩开始,当数到m时,该小孩出列,如此反复,直到最后一个小孩。

点击查看答案

第7题

阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。【说明】 设有n个人围坐一圈并按顺

阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。

【说明】

设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第m个人,则此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去,直到所有的人都出圈为止。

现要求按出圈次序,每10人一组,给出这n个人的顺序表。

设n=100,s=1,m=10。

(1)将1到n个人的序号存入一维数组p中;

(2)若第i个人报数后出圈,则将p置于数组的倒数第i个位置上,而原来第i+1个至倒数第i个元素依次向前移动一个位置:

(3)重复第(2)步,直至圈中只剩下p[1]为止。

include<stdio.h>

define N 100

define S 1

define M 10

void main()

{

int p[100],n,s,m;

m=M;

n=N;

s=S;

int i,j,s1,w;

s1=s;

for(i=1;(1);i++)

(2)=i;

for(i=n;i>=2;i--)

{

s1=(3);

if(s1==0)s1=i;

w=(4);

for(j=s1;j<i;j++)

p[j-1]=p[j];

p[i-1]=(5);

printf("%4d",p[i])}

}

点击查看答案

第8题

设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第m个人,此人出
圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止。现要求按出圈次序,每10人一组,给出这n个人的顺序表。请考生编写函数Josegh(void)实现此功能,并调用函数writeDat,把结果P输出到文件out.dat中。 设n=100,s=1,m=10。 ①将1到n个人的序号存入一维数组P中; ②若第i个人报数后出圈,则将p[i]置于数组的倒数第i个位置上,而原来第i+1个至倒数第i个元素依次向前移动一个位置; ③重复第②步直至圈中只剩下p[1]为止。 注意:部分源程序已经给出。 请勿改动主函数main和输出数据函数writeDAT的内容。设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第m个人,此人出设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第m个人,此人出

点击查看答案

第9题

设有n个人围坐一圈并按顺时针方向从l到n编号,从第s个人开始进行l到m的报数,报数到第m个人,此人出
圈,再从他的下一个人重新开始l到m的报数,如此进行下去直到所有的人都出圈为止。现要求按出圈次序,每l0人一组,给出这n个人的顺序表。请考生编写函数Josegh(void)实现此功能,并调用函数writeDat,把结果P输出到文件out.dat中。 设n=100,s=1,m=10。 ①将l到n个人的序号存入一维数组P中; ②若第i个人报数后出圈,则将p[i]置于数组的倒数第i个位置上,而原来第i+1个至倒数第i个元素依次向前移动一个位置; ⑨重复第②步直至圈中只剩下p[1]为止。 注意:部分源程序已经给出。 请勿改动主函数main和输出数据函数writeDAT的内容。设有n个人围坐一圈并按顺时针方向从l到n编号,从第s个人开始进行l到m的报数,报数到第m个人,此人出设有n个人围坐一圈并按顺时针方向从l到n编号,从第s个人开始进行l到m的报数,报数到第m个人,此人出设有n个人围坐一圈并按顺时针方向从l到n编号,从第s个人开始进行l到m的报数,报数到第m个人,此人出

点击查看答案

第10题

设有n个参与人的集合I={1,2……,n},对任一子集S⊆I,定义一个实函数V(S)满足:当S1∩S2=φ,S1⊂I。S2⊂I

设有n个参与人的集合I={1,2……,n},对任一子集S⊆I,定义一个实函数V(S)满足:当S1∩S2=φ,S1⊂I。S2⊂I时,V(S1∪S2)≤V(S1)+V(S2)。这点称为超可加性,在经济学上称之为协同效应。()

点击查看答案
发送账号至手机
获取验证码
发送
温馨提示
该问题答案仅针对搜题卡用户开放,请点击购买搜题卡。
马上购买搜题卡
我已购买搜题卡, 登录账号 继续查看答案
重置密码
确认修改
温馨提示
每个试题只能免费做一次,如需多次做题,请购买搜题卡
立即购买
稍后再说
警告:系统检测到您的账号存在安全风险

为了保护您的账号安全,请在“赏学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!

微信搜一搜
赏学吧
点击打开微信
警告:系统检测到您的账号存在安全风险
抱歉,您的账号因涉嫌违反赏学吧购买须知被冻结。您可在“赏学吧”微信公众号中的“官网服务”-“账号解封申请”申请解封,或联系客服
微信搜一搜
赏学吧
点击打开微信