问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

谁告诉我约瑟夫环的设计思路啊

发布网友 发布时间:2022-05-30 19:33

我来回答

3个回答

热心网友 时间:2022-07-08 05:36

约瑟夫环:
约瑟夫环问题的一种描述是:编号为1.2.3…….n的n个人按顺时针方向围坐一圈

,每人手持一个密码(正整数),开始任意选一个整数作为报数上限值,从第一

个人开始顺时针自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密

码作为新的m值,从他顺时针下一个人开始重新从1开始报数,如此下去直到所有

的人全部都出列为止。试设计程序实现。
要求:利用循环链表存储结构模拟此过程,按照出列的顺序打印各人的编号。
测试数据:m的值初始为20:密码3 ,1,7,2,4,8,4。
正确的结果:6,1,4,7,2,3,5。
提示:程序运行后首先要求用户指定初始报数上限。然后读取各人的密码。设

n<30。

typedef struct node
{
int num,code;
struct node *next;
}lnode;
void main()
{
int i,j,key,n; /*i,j为记数器,key为输入的密码,n为人的总个数*/
lnode *p,*s,*head;
head=(lnode *)malloc(sizeof(lnode)); /*为头结点分配空间*/
p=head;
printf("Please enter the num of the person:"); /*输入人的总个数*/
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("Person %d",i);
printf(" code: ");
scanf("%d",&key); /*输入各个人的密码*/
s=p;
p=(lnode *)malloc(sizeof(lnode)); /*创建新的结点*/
s->next=p;
p->num=i;
p->code=key;
}
p->next=head->next;
p=head;
head=head->next;
free(p);

p=head;
do
{
printf("\nPerson%d Code:%d",p->num,p->code); /*输出链表*/
p=p->next;
}while(p!=head);

printf("\nPlease enter your first key:"); /*输入第一个数*/
scanf("%d",&key);
do
{
j=1; /*j为记数数*/
p=head;
while(j<key)
{
s=p;
p=p->next;
j++;
}
i=p->num;
key=p->code;
printf("\nThe out of the num:");
printf("Person%d",i);
s->next=p->next;
head=p->next; /*重新定义head,下次循环的开始结点*/
free(p);
n--; /*每循环一次人是减1*/
}while(n>0);
getch();
}

热心网友 时间:2022-07-08 05:36

http://hi.baidu.com/ccs%5Fxx/blog/item/93541c1fdcb74ccca78669f8.html

这是我写的 不懂就问 我写的很有特色的

方法就是先采用一个大数组放任的编号 1,2,3,4,5,6,7,8,9,10,1,2,3等等
然后,从开始第一个数每隔三个人取数,每取一次数后,就省掉当前数之后的所有相同的数,然后隔3个取一个数 直到取得数的个数为人的个数和 。总的方法就是多多采用stl
呵呵

热心网友 时间:2022-07-08 05:36

看看百度百科吧,呵呵http://ke.baidu.com/view/717633.html?wtp=tt
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... 历史上是哪一位大将指挥杀死了蒙哥 青春有你2张钰为什么叫张总? 请高手帮我翻译一下这两个圣旨,谢谢啦~~~ 藏头诗(‘张钰生日快乐’和‘张钰我爱你’) 张钰和张亦婷名字哪个好 张钰璇,狮子座,2002年8月21日,女 张钰果女孩打多少分? 张珏茹名字多少分 张珏的介绍 张珏玥名字打分 张钰清 名字好吗? lv蒙田小号重多少克 1992年五月十一日是什么塔罗牌 1992年十一月十一日塔罗牌是什么 大家知道塔罗牌吗? 塔罗牌的第十一张牌 塔罗牌第十一张是什么牌?详细的意思是? 第11张塔罗牌是什么 模拟装饰房间可以用什么软件 对上海的印象,两三句话就好了 约瑟夫环运用了哪些c语言知识点 约瑟夫环的实现 有没有谁知道华为手机如何关闭省电模式 我在联通网上营业厅充值话费 结果充值失败了 但是钱已经扣了怎么办 已经过了48小时了 钱既没有冲上也没退回 我在联通手机营业厅充话费显示失败,但是我的钱在银行卡里已经扣了,既然显示充值失败,钱什么时候退回来 你害怕大雨么 你害怕大雨吗 我国国旗升降时间是怎么确定 你还怕大雨吗? 你害怕大雨吗?有没有听哭出来互相分享一下 五一天安门几点升国旗 什么是微分几何? 为什么今天升半旗的? 女生发你害怕大雨吗怎么回复? 微分几何是什么? 今天举国哀悼,为什么要降半旗?鸣笛?代表什么? 微分几何的基本内容 今天7月3日英国为什么要降半旗 今天降半旗国歌为什么奏三遍,是国旗法的规定吗 秘鲁为什么今天也降半旗?它和中国的关系怎么这么好?为什么 ?