社区
C语言
帖子详情
求助
八卦之魂
2003-10-15 07:12:58
各位兄弟姐妹大家好,小弟有一道数据结构的题目做不出来,麻烦哪位帮我做出来。不胜感激。谢谢。y-sea321@sohu.com
约瑟夫环:
编号1-N的人顺时针排成环,每人持有一密码(密码为任意一正整数,但不能重复),初始一正整数 M,任从环中一处顺时针报数,直到M时,删去该人,并取其密码作为下一次的 M',再从该人的下一个人开始报数,如此下去,直到剩下最后一人为止。
要求用链表处理,用C/C++语言描述。
...全文
38
5
打赏
收藏
求助
各位兄弟姐妹大家好,小弟有一道数据结构的题目做不出来,麻烦哪位帮我做出来。不胜感激。谢谢。y-sea321@sohu.com 约瑟夫环: 编号1-N的人顺时针排成环,每人持有一密码(密码为任意一正整数,但不能重复),初始一正整数 M,任从环中一处顺时针报数,直到M时,删去该人,并取其密码作为下一次的 M',再从该人的下一个人开始报数,如此下去,直到剩下最后一人为止。 要求用链表处理,用C/C++语言描述。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hhlong
2003-10-16
打赏
举报
回复
厉害呀!
北极猩猩
2003-10-16
打赏
举报
回复
当然是一样的了,霍夫曼环,经典问题啊
playboyxp
2003-10-16
打赏
举报
回复
#include <iostream.h>
void main()
{
int a[17],i,j,k=1,integer;
for(i=0;i<17;i++)
a[i]=i+1;
cin>>integer;
i=-1;
while(1)
{
for(j=0;j<integer;)
{
i=(i+1)%17;
if(a[i]!=0) j++;
}
if(k==17) break;
cout<<a[i]<<" ";
a[i]=0;
k++;
}
cout<<a[i]<<endl;
}
hbDeng
2003-10-16
打赏
举报
回复
我当年的作业作业不知道丢哪去了,你要的话,留个言,我帮你找找
李马
2003-10-15
打赏
举报
回复
这是我当年的作业,和你的要求好像完全一样哦。
#include <stdio.h>
#include <stdlib.h>
/* 链表结点 */
typedef struct _linknode {
int nIndex;
int nPassword;
struct _linknode* next;
} NODE, *PNODE;
/* 函数声明 */
PNODE CreateLinkList(int* pn);
PNODE AddNode(PNODE pHead, int index);
PNODE DelNode(PNODE pHead, int index, int* pm);
void SimOut(PNODE pHead, int m, int count);
/* 主函数 */
int main(void)
{
int m, n;
PNODE pHead = CreateLinkList(&n);
printf("Please input m: ");
scanf("%d", &m);
SimOut(pHead, m, n);
return 0;
}
/* 创建链表,并返回头结点 */
PNODE CreateLinkList(int* pn)
{
int n, i;
PNODE p, q;
/* 初始化头结点 */
p = (PNODE)malloc(sizeof(NODE));
p->nIndex = -1;
p->nPassword = -1;
p->next = NULL;
/* 取得总人数 */
printf("Please input the number of the peoples: ");
scanf("%d", &n);
*pn = n;
/* 创建其它结点 */
for (i = 0; i < n; i++)
q = AddNode(p, i);
/* 创建约瑟夫环 */
q->next = p->next;
free(p);
return q;
}
/* 添加一个结点,返回其地址 */
PNODE AddNode(PNODE pHead, int index)
{
PNODE p, q;
int i = 0;
/* 定位结点 */
for (p = pHead; p->next != NULL; p = p->next)
if (i++ == index)
break;
/* 创建结点 */
q = (PNODE)malloc(sizeof(NODE));
q->nIndex = index + 1;
printf("Please input person #%d password: ", index + 1);
scanf("%d", &q->nPassword);
p->next = q;
q->next = NULL;
return q;
}
/* 删除结点,并返回前一个结点 */
PNODE DelNode(PNODE pHead, int index, int* pm)
{
PNODE p, q;
int i = -1;
/* 定位结点 */
for (p = pHead ; p != NULL; p = p->next)
if (++i == index)
break;
/* 删除结点 */
q = p->next;
printf("Number %d is out.\n", q->nIndex);
p->next = q->next;
/* pm传回新的m值 */
*pm = q->nPassword;
free(q);
/* 返回前一个结点,以备下次删除之用 */
return p;
}
/* 模拟约瑟夫环的报数过程 */
void SimOut(PNODE pHead, int m, int count)
{
int x = m;
int n = count;
PNODE p = pHead;
while (n > 0)
{
p = DelNode(p, x % n != 0 ? x % n - 1 : n - 1, &x);
n--;
}
}
kettle迁移示例
kettle数据迁移示例。从mysql数据库表迁移到oracle数据库表。
ADSL密码导出器,备份宽带帐号密码,宽带帐号密码提取器
家庭用户经常会设置宽带帐号密码为自动登陆模式,但长时间不输密码的情况下,极容易将密码忘记,在找回时只能打电话
求助
于宽带服务商~ 现在这个软件将为您解决一切繁琐的操作,执行后您的所有上网参数与密码将自动生成备份文件存于D盘根目录下,您可以方便的查看自己的宽带帐号和密码. 送修电脑时,工作人员也可以使用此工具先行提取并保存用户的宽带帐号和密码,等维修完毕再恢复.
算法技术手册 - 中文版
《算法技术手册》内容简介:开发健壮的软件需要高效的算法,然后程序员们往往直至问题发生之时,才会去
求助
于算法。《算法技术手册》讲解了许多现有的算法,可用于解决各种问题。通过阅读它,可以使您学会如何选择和实现正确的算法,来达成自己的目标。另外,书中的数学深浅适中,足够使您可以了解并分析算法的性能。 较之理论而言,《算法技术手册》更专注于应用。《算法技术手册》提供了高效的代码解决方案,使用多种语言进行编写,让您可以轻松地将其应用于特定的工程当中。通过《算法技术手册》,您可以: · 解决特定代码的问题,或者提升既有解决方案的性能 · 快速找到与您所解决的问题相关的算法,并决定哪个算法才是最适合的那一个 · 探索使用C、C++、Java以及Ruby实现的算法解决方案以及开发小贴士 · 了解算法预期的性能,以及它达到最高性能时所需要的条件 · 发现不同算法之间相似的设计哲学 · 学习高级数据结构,来提升算法的性能 通过《算法技术手册》,您能学到如何提升算法的性能,这将是您的软件应用程序走向成功的关键。
教师回应幼儿
求助
行为的问题及对策研究
摘要 幼儿的
求助
行为是幼儿园比较常见的现象,怎样进行处理,直接影响到幼儿社会性发展。这是由于在
求助
过程中,幼儿可以和被
求助
者,多为教师进行互动,可以使幼儿学会许多解决问题的技巧,最终也就可以促进幼儿社会性的发展。本文选择3岁至6岁幼儿为研究对象,采用观察法,进行探究幼儿在幼儿园里的
求助
行为进行了研究。通过对幼儿
求助
行为的内容、对象、背景、方式和教师回应幼儿
求助
行为这几个部分进行表述,全面进行展示幼...
魅族手机有SOS功能吗?紧急联络
求助
如何设置和开启
魅族手机SOS紧急联络功能即将上线 前段时间的各种网约车安全事件引起了全国人民的高度重视,搞得满城人人自危。人们在指责犯罪嫌疑人的同时,也在努力寻找各种紧急联络和紧急报警方法。为了向用户提供安全保障,小米、OPPO、三星等手机都紧急加入了SOS紧急联络功能。而近日,魅族官方也正式确认,魅族Flyme系统也将于近期上线「SOS紧急
求助
功能」。 推荐阅读:How to Add Emergenc...
C语言
69,373
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章