草庐IT

python 约瑟夫生者小游戏 用list实现

问题描述:30个人在一条船上,超载,需要15人下船。于是人们排成一队,排队的位置即为他们的编号。报数,从1开始,数到9的人下船。如此循环,直到船上仅剩15人为止,问都有哪些编号的人下船了呢?  查看网上的资料都是把人员实例为字典,1代表在船上,0代表下船。网上的实现代码如下:1people={}2forxinrange(1,31):3people[x]=14#print(people)5check=06i=17j=08whilei:9ifi==31:10i=111elifj==15:12break13else:14ifpeople[i]==0:15i+=116continue17else:18

约瑟夫环问题

约瑟夫环问题百度百科中写道:"约瑟夫问题是个有名的问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。"其可以理解成有一个[0..N-1]的数组,从下标0开始,每次删掉第m个数,下一轮从被删掉的下一个数字开始,直至只剩下最后一个,那么最后剩下的一个是哪个数字?我们以[0,1,2,3,4],m=3为例。从下标0开始,删掉第3个数,就是下标为m-1=2,那么删掉后就是[0,1,3,4],下一次从3(下标为2)开始。[0,1,3,4]从3(下标2)开始就等价于[3,4,0,1]从下标0开始,删掉第3个:0。以此类推,下一个数组就是[1,3,4],删掉4。再下一个数

约瑟夫环问题

约瑟夫环问题百度百科中写道:"约瑟夫问题是个有名的问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。"其可以理解成有一个[0..N-1]的数组,从下标0开始,每次删掉第m个数,下一轮从被删掉的下一个数字开始,直至只剩下最后一个,那么最后剩下的一个是哪个数字?我们以[0,1,2,3,4],m=3为例。从下标0开始,删掉第3个数,就是下标为m-1=2,那么删掉后就是[0,1,3,4],下一次从3(下标为2)开始。[0,1,3,4]从3(下标2)开始就等价于[3,4,0,1]从下标0开始,删掉第3个:0。以此类推,下一个数组就是[1,3,4],删掉4。再下一个数

约瑟夫环问题(C语言)

单链表实现约瑟夫环问题约瑟夫环这里建议使用循环单链表代码实现(c语言)#include#includetypedefstructnode{ intdata; structnode*next;}Node;voidysflb(intn,intk){//总共n,k出去//创建链表Node*head=NULL,*p=NULL,*r=NULL,*next=NULL;head=(Node*)malloc(sizeof(Node));//开空间if(head==NULL){//判断head是否创建成功,一般都成功 printf("Failed"); return;}head->data=1;head->ne

约瑟夫环问题(C语言)

单链表实现约瑟夫环问题约瑟夫环这里建议使用循环单链表代码实现(c语言)#include#includetypedefstructnode{ intdata; structnode*next;}Node;voidysflb(intn,intk){//总共n,k出去//创建链表Node*head=NULL,*p=NULL,*r=NULL,*next=NULL;head=(Node*)malloc(sizeof(Node));//开空间if(head==NULL){//判断head是否创建成功,一般都成功 printf("Failed"); return;}head->data=1;head->ne