⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 thejosephuwreathproblemsolves.txt

📁 The Josephu wreath problem solves
💻 TXT
字号:
	置标志
 #include<stdio.h>

void priList(int *prilist,int count)  //打印表prilist的前count的元素
{
      int priloop;
      for(priloop=0;priloop<count;priloop++)
      {
	       printf("%-4d",prilist[priloop]);
      }
      printf("\n****************************************\n");
}

void  Josephu()        //Josephu算法求解
{
      int listlen,position,stand; //记录表长,所求元素位置,和引入间隔数
      int loop;         //循环计数器
      int newpos;     //记录前进步伐
      int *Joselist,*newlist;
      printf("\n####### N REPRENT THE LENTH OF THE LIST########\n");
      printf("N=");     //提示输入表长度
      scanf("%d",&listlen);        
      printf("########## X REPRENT WHO WILL STAND UP#########\n");
      printf("X=");      //输入间隔数
      scanf("%d",&stand);
      Joselist=(int *)malloc(listlen*sizeof(int));      //根据输入的长度分配空间大小
      newlist=(int*)malloc(listlen*sizeof(int));      //建新表
      for(loop=0;loop<listlen;loop++)     //按顺序将Joselist添满
	  Joselist[loop]=loop+1;
      printf("****************************************\n");  //打印出原表
      printf("            PRIMARY LIST             \n");
      priList(Joselist,listlen);
      newpos=0;        
      position=0;        
      while(newpos<listlen)        //寻找所求元素
      {
	   loop=0;
	    while(loop<stand-1)
	    {
	      while(Joselist[position]==-1)
		      position=(position+1)%listlen;
	      position=(position+1)%listlen;
	      loop++;
	    }
	    while(Joselist[position]==-1)
	        position=(position+1)%listlen;     //找到所求
	    newlist[newpos++]=Joselist[position];    //所求元素进新表
	    Joselist[position]=-1;                 //在该元素在原表中的位置添加标志-1
      }
      printf("****************************************\n");
      printf("            NEW LIST             \n"); //打印新表即所求
      priList(newlist,listlen);
}

main()
{
    Josephu();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -