必威体育Betway必威体育官网
当前位置:首页 > IT技术

约瑟夫问题

时间:2019-10-07 17:44:24来源:IT技术作者:seo实验室小编阅读:50次「手机版」
 

约瑟夫问题

链表是c语言中的一个重要的组成部分,数组有它的不足之处,就是在刚开始定义数组时必须明确它的元素的个数。但是,在实际应用的过程中,经常可能要用多次数组,这样的话就必须在开始定义一个比较大的数组,而这样的话又恰恰会浪费一定的存储空间,这样的话用链表就可以解决这个问题。链表也是c语言中和指针,位运算一样,一些比较特色而又比较重要的功能。而接下来要写的就是用链表解决的约瑟夫问题

约瑟夫问题的简单描述:N个人围成一圈,从第一个人开始报数,第M个将被杀掉,依次进行,最后只剩下一个,其余人将被杀掉,这就是著名的约瑟夫问题,以下的代码中将用41个人作为例子来用c语言解决约瑟夫问题。

 

 链表是c语言中的一个重要的组成部分,数组有它的不足之处,就是在刚开始定义数组时必须明确它的元素的个数。但是,在实际应用的过程中,经常可能要用多次数组,这样的话就必须在开始定义一个比较大的数组,而这样的话又恰恰会浪费一定的存储空间,这样的话用链表就可以解决这个问题。链表也是c语言中和指针,位运算一样,一些比较特色而又比较重要的功能。而接下来要写的就是用链表解决的约瑟夫问题。

约瑟夫问题的简单描述:N个人围成一圈,从第一个人开始报数,第M个将被杀掉,依次进行,最后只剩下一个,其余人将被杀掉,这就是著名的约瑟夫问题,以下的代码中将用41个人作为例子来用c语言解决约瑟夫问题。

#include <stdio.h>

#include <stdlib.h>

struct Jew {

int number;

struct Jew* next;

};

int main (int argc, char ** argv)

{

struct Jew* jew;

struct jew* r;

int N;

int M;

int i;

printf ("Please input number of Jew(N) and Interval (M):\n");

scanf ("%d,%d",&N,&M);

jew =(struct Jew*)malloc(N * sizeof(struct Jew)); 

 r=jew;/*→X链表的第一个节点*/

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

{

r →number=i;

r →next=jew+1;

r = r →next;

r→number=N;

r→next=jew;/*链表的最后一个节点指向第一个节点的地址,形成环形链表*/

printf("Suicide order:\n");

while (r!=r→next)

{

for (i=0;i<(M-1);i++)

r=r→next;

printf ("%4d",r→next→number);

r→next=r→next→next;

printf ("\n When N =%d and M=%d,Josephus, hiding in posotion %d survives. \n,N ,M,r→nunumber");

free (jew);

return 0;

}

这就实现了约瑟夫问题,41个人,在31号位置的得以幸存。

相关阅读

docker 容器中设置中文语言包的问题

如果在Docker 中采用 docker search centos 采用 docker pull docker.io/centos 下载基础镜像 这个镜像是不支持中文的,可以采

Cloneable的问题

修改bug时,有一个类实现了Cloneable接口,但是里面没有复写clone()方法,出现上面错误解决办法,如果只继承了cloneable接口,没有覆写obje

H5项目---视频微信播放问题

前端开发一起交流QQ群:740034288。 互联网创业团队兴趣QQ群:792710437。 新建《团队合伙人》贴吧:https://tieba.baidu.com/f?kw=%

数学建模之线性规划问题(含整数规划和0-1规划)

线性规划问题 线性规划是数学规划中的一类最简单规划问题,常见的线性规划是一个有约束的,变量范围为有理数的线性规划。 如: 为

医院回应接种本被修改:疫苗无问题 记录有错误

据山西省临汾市霍州人民医院官方微信消息,2019年3月6日晚,霍州市人民医院接到群众反映妇产科医务人员修改《儿童预防接种证》的情况

分享到:

栏目导航

推荐阅读

热门阅读