zoukankan      html  css  js  c++  java
  • 约瑟夫环实现

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    void JosephsonCircle(int total, int num)
    {
      //计数步进
      int step = 1;
      //当前计数位置          
      int pos = 0; 
      //出对人数         
      int count = 0; 
      //队列数组       
      int *p = (int *)malloc(sizeof(int)*total); 
     
      //初始化数组元素值都为0,即用0表示该人未出队
      memset(p, 0, total);    
     
      //循环计数,知道所有人出队为止
      while(count < total)
      {
        //如果当前位置的人未出队
        if(p[pos] == 0)
        {
          //当前人计数不为num
          if(step != num)
          {
            step ++;
          }
          //当前人计数为num,则该人出队
          else
          {  
            //该人位置数组值设为1,表示出队
            p[pos] = 1;
            //输出位置值
            printf("%d  ", pos+1);
            //出队人数递增
            count ++;
            //计数步进初始为1
            step = 1;
          }
        }
        //循环一次跳过一个人,到队尾取余回到队首
        pos = (pos + 1) % total;
      }
      free(p);
    }
     
    int main()
    {
      JosephsonCircle(10, 3);
      return 0;
    }
     





  • 相关阅读:
    go学习中的零散笔记
    git reset --hard与git reset --soft的区别
    php必学必会
    gdb 解core
    php学习
    高仿京东到家APP引导页炫酷动画效果
    RxHttp
    SVN回滚文件
    遍历枚举
    python3 多线程
  • 原文地址:https://www.cnblogs.com/lvniao/p/3644993.html
Copyright © 2011-2022 走看看