约瑟夫环 r囧r小猫 2021-12-20 04:29 320阅读 0赞 编号为1,2,…,n的n个人按顺时针方向围坐在一张圆桌周围,每人持有一个密码(正整数)。一 开始任选一个正整数m作为报数上限值,从第一个人开始按顺时针方向自1开始报数,报到m时停止报数,报m的那 个人出列,将他的密码作为新的m值,从他顺时针方向的下一个人开始重新从1报数,数到m的那个人又出列;如 此下去,直至圆桌周围的人全部出列为止。要求按出列顺序输出n个人的编号。 \*/ /\*第一行输入两个整数,依次表示人数n和初始化密码m,以空格间隔。 第二行依次输入n个整数,分别表示n个人的密码,以空格间隔。 \*/ /\*按出列次序输出每个人的编号,以空格间隔。 代码如下: #include <stdio.h> #include<stdlib.h> typedef struct stu{ int data; struct stu *next; int password; }st; st *init_list() { st *head; head=(st *)malloc(sizeof(int)); head->next=NULL; } st *create(int n) { st *head,*p,*r,*s; int i,x; head=init_list(); r=head; for(i=1;i<=n;i++) { s=(st *)malloc(sizeof(int)); s->data=i; scanf("%d",&x); s->password=x; s->next=r->next; r->next=s; r=s; } r->next=head->next; return head; } void deal(int n,int m,st *head) { int icount=1,count=0; st *p=head->next->next,*pre=head->next,*r,*tmp=head->next; free(head); while(1) { if(pre->next==tmp) {r=pre; break;} else {pre=pre->next;} } pre=pre->next; while(1) { count++; if(count%m==0) { r->next=pre->next; printf("%d ",pre->data); count=0; m=pre->password; free(pre); pre=r->next; icount++; } if(count%m) { pre=pre->next;; r=r->next; } if(icount-1==n) break; } return ; /* while(1) { icount++; if(icount%m==0) { pre->next=p->next; printf("%d ",p->data); icount=1; m=p->password; free(p); p=pre->next; count++; } if(icount%m) { pre=pre->next; p=p->next; } if(count==n) break; }*/ } main() { int n,m; st *head; scanf("%d %d",&n,&m); //getchar(); head=create(n); deal(n,m,head); } 转载于:https://www.cnblogs.com/cstdio1/p/11083353.html
相关 约瑟夫环 约瑟夫环 1、参考资料 https://blog.csdn.net/shuaicihai/article/details/54847433 2、使用数组 痛定思痛。/ 2022年11月27日 06:54/ 0 赞/ 185 阅读
相关 约瑟夫环 package com.someusefuldesign.demo; import java.util.ArrayList; /约瑟 桃扇骨/ 2022年08月13日 15:54/ 0 赞/ 183 阅读
相关 约瑟夫环 \include<stdio.h> \include<stdlib.h> /\ 约瑟夫环是一个数学的应用问题: 已知n个人(以编号1,2,3...n分别表示)围 ╰半夏微凉°/ 2022年08月07日 01:53/ 0 赞/ 204 阅读
相关 约瑟夫环 约瑟夫环 约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个 怼烎@/ 2022年07月15日 13:39/ 0 赞/ 199 阅读
相关 约瑟夫环 N个人坐成一个圆环(编号为1 - N),从第1个人开始报数,数到K的人出列,后面的人重新从1开始报数。问最后剩下的人的编号。 例如:N = 3,K = 2。2号先出列,然后是 桃扇骨/ 2022年06月11日 06:26/ 0 赞/ 208 阅读
相关 约瑟夫环 【问题描述】 编号为 1,2,...,n 的 n 个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。现在给定一个随 机数 m>0,从编号为 1 的人开始,按顺时针方向 1 今天药忘吃喽~/ 2022年04月22日 06:06/ 0 赞/ 254 阅读
相关 约瑟夫环 > 约瑟夫环运作如下: > 1、一群人围在一起坐成 \[2\] 环状(如:N) > 2、从某个编号开始报数(如:K) > 3、数到某个数(如:M)的时候,此人出列, 阳光穿透心脏的1/2处/ 2022年03月22日 16:38/ 0 赞/ 303 阅读
相关 约瑟夫环 约瑟夫环:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规 曾经终败给现在/ 2022年02月28日 00:54/ 0 赞/ 238 阅读
相关 约瑟夫环 编号为1,2,…,n的n个人按顺时针方向围坐在一张圆桌周围,每人持有一个密码(正整数)。一 开始任选一个正整数m作为报数上限值,从第一个人开始按顺时针方向自1开始报数,报到m时 r囧r小猫/ 2021年12月20日 04:29/ 0 赞/ 321 阅读
相关 约瑟夫环 int cir(int n,int m) { int p=0; for(int i=2;i<=n;i++) { 我会带着你远行/ 2021年12月16日 15:13/ 0 赞/ 331 阅读
还没有评论,来说两句吧...