当前位置: 首页 > news >正文

做搜狗网站优化排by72777最新域名查询

做搜狗网站优化排,by72777最新域名查询,重庆最近的新闻大事10条,技术支持 哈尔滨网站建设约瑟夫环问题由古罗马史学家约瑟夫(Josephus)提出,他参加并记录了公元66—70年犹太人反抗罗马的起义。在城市沦陷之后,他和40名死硬的将士在附近的一个洞穴中避难。起义者表示“宁为玉碎不为瓦全”,约瑟夫则想“留得青…

        约瑟夫环问题由古罗马史学家约瑟夫(Josephus)提出,他参加并记录了公元66—70年犹太人反抗罗马的起义。在城市沦陷之后,他和40名死硬的将士在附近的一个洞穴中避难。起义者表示“宁为玉碎不为瓦全”,约瑟夫则想“留得青山在不愁没柴烧”。于是,约瑟夫建议41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。问:约瑟夫及其朋友应该站在哪个位置?、

        n个人围成一个圆圈,然后从第一个人开始,按:1,2,3,…,m报数,数到m的人出圈,并有出圈者的下一个人重新开始报数,数到m又要出圈,如此类推,直到所有人都出圈,打印出圈的次序,其中n和m为输入数据

        这个问题可以通过数学推理和递归算法来解决。通过不断地计算,可以发现每次移除一个人后,剩下的人重新排列成一个新的圆圈,规模减小并且从下一个人开始。通过不断地递归计算,可以找到最后一个人的位置。

        本篇博客用C语言,利用循环单链表求解约瑟夫环问题。

        引用的头文件

#include<stdio.h>
#include<malloc.h>
#include<time.h>//计算执行时间 

        在main函数中,首先输入总人数count和报数规律num,然后调用Solve_lijie函数求解约瑟夫环问题。为了计算程序执行时间,使用了clock函数来记录开始和结束时刻,然后计算差值得到执行时间。

int main()
{int count, num;double duration; Loop* L;printf("输入总人数count和报数规律num:");scanf("%d%*c%d", &count, &num);//循环单链表求解clock_t start, finish;//长整型数 start = clock();Solve(L, count, num);finish = clock();//记录前后时刻 duration = (double)(finish - start) / CLOCKS_PER_SEC;//这个是有定义的宏 printf("\n使用循环单链表存储所用执行时间:%lf", duration);return 0; } 

结构体定义

typedef int ElemType;
typedef struct Josephus
{ElemType MEN;	struct Josephus* next;
}Loop;
// 循环单链表初始化
void Init(Loop* &L)
{L = (Loop *)malloc(sizeof(Loop));L -> next = L;	// 头尾相连 
}void Create(Loop* &L, int count)
{if(count < 1){printf("介个是个空环\n");return;}Loop *s, *r;Init(L); //初始化头节点 L->MEN = 1; r = L;	//指向头节点 for(int i = 2; i <= count; i++){	//对头节点后面的节点进行初始化并录入数据 Init(s);s->MEN = i;s->next = L;//循环,尾部也是L r->next = s;//r指向头节点 r = s;}
}void Display(Loop* &L)//用于检测是否正常录入数据 
{Loop *p = L;if(L == NULL)return;	printf("报数:\n");do{printf("%d\t", p->MEN);p = p->next;}while(p != L);//兜兜转转回到原点 printf("\n");return; 
}
void Solve(Loop* &L, int count, int num)
{Create(L, count);Display(L);int j;//循环,根据报数规律num让成员出列,受总人数count影响//每杀一个,count--; 每到第num个,就打印后free一个 Loop *p, *r;r=p = L;while(r->next != L)r = r->next;for(int i = count; i > 1; i--){j = 1;do{		r = p;	//形成一前一后两指针 p = p->next;j++;}while(j < num);// 不符合出列条件。此时两指针各下移一个单位r->next = p->next;printf("这个人死了: %d\n", p->MEN);free(p);p = r->next;//符合条件。此时后指针后续链接前指针的后续,释放前指针p,然后恢复前后位置顺序。}printf("获胜者是%d\n", p->MEN);
}

http://www.15wanjia.com/news/41372.html

相关文章:

  • 申通e物流的网站建设网络公司优化关键词
  • 会展相关网站的建设情况南京网站设计优化公司
  • 网站结构的规划与设计营销手机系统安装
  • 动漫制作专业排名天津百度seo代理
  • 珠海高端网站建设公司百度快照提交入口
  • 济南行业网站开发游戏推广可以做吗
  • 做vi的图有网站吗互联网推广的方式
  • 网页设计公司兴田德润在哪儿南宁seo多少钱报价
  • 网站制作学什么软件有哪些百度站长工具seo查询
  • 自己想做一个网站怎么做服务营销的概念
  • 网站建设中如何使用字体重庆疫情最新消息
  • 外贸网站优化怎么做seo交流网
  • 外国人注册公司需要什么条件seo的五个步骤
  • 中原郑州网站建设查询网 域名查询
  • 建筑设计公司职位有哪些商品关键词优化的方法
  • 青海餐饮网站建设公司企业网站建设需要多少钱
  • 黄冈论坛遗爱网贴吧seo排名优化软件
  • 有什么网站是layui做的最新时事热点
  • 做海报的网站有哪些内容上海热点新闻
  • 好听大气的公司名称石家庄网络seo推广
  • 南庄做网站百度账号申诉中心
  • 企业网站备案需要哪些资料网络推广哪个平台好
  • 搜索引擎优化是什么百度搜索引擎关键词优化
  • 可以做数据图的的网站百度指数分是什么
  • 做的好的日本网站设计抖音搜索关键词排名
  • 高端网站定做google谷歌
  • 贵阳网站制作贵阳网站建设哪家好免费建站免费推广的网站
  • 网站的设计方法百度宣传推广
  • 西安北郊做网站的公司免费创建网站
  • wordpress 仿百度文库北京优化互联网公司