回 帖 发 新 帖 刷新版面

主题:约瑟夫环

#include <stdlib.h>
#include <stdio.h>
 struct node {
    int num;
    int we;
    struct node *next;
  }; 
  void main(void)
{
 int i,x,y; 
 struct node *h,*s;
 h=(struct node *)malloc(sizeof(struct node));
 s=h;
 for(i=0;i<=3;i++){
     scanf("%d,%d",&x,&y);
     h->num=x;
     h->we=y;
     h=h->next;}
 h->next =s;
 int m=3;
 while(s){
      if(s->num==m){
      printf("%d",s->num);
      m=s->we;
      h->next=s->next ;
      s=s->next;}
    else 
        s++;
        h++;}
}帮忙看看这个程序的错误,为啥显示没错了还不运行

回复列表 (共2个回复)

沙发

我还是个菜鸟,能给我解释下什么是约瑟夫环?

板凳


约瑟夫环问题的一种描述是:编号为1,2,.....,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数.报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。试设计一个程序求出出列顺序。

我来回复

您尚未登录,请登录后再回复。点此登录或注册