zoukankan      html  css  js  c++  java
  • 约舍夫问题

     1 /*
     2 
     3 约舍夫问题:
     4 M个人围成圈,相邻相继编号1-M;
     5 从1号人开始1号报数;
     6 如果所报数为m,则撤出圆圈队伍。相邻的下一位报数者从1开始。
     7 直至剩下最后一位,求其是第几位。
     8 
     9 */
    10 
    11 # include<stdio.h>
    12 
    13 void main(){
    14     int M = 0; int sum = 0; int m = 0;  int tmp = 0; int Num = 0;
    15     printf("Input the number(<1000) of people:
    ");
    16     wscanf_s(L"%d", &M);
    17     printf("Input the number that people would say:
    ");
    18     wscanf_s(L"%d", &m);
    19     int k [1000];
    20     for(int j = 0; j <1000; j++){
    21         k[j] = 1;
    22     }                                         //init k[]
    23     while(Num!=M-1)
    24     {
    25       printf("The %d loop
    ",m);
    26 
    27       for (int i = 0; i < M; i++){        
    28         if (k[i] == 1)
    29         {
    30             sum++;
    31             if (sum % m == 0)
    32             {
    33                 k[i] = 0; printf("Remove %d
    ", i+1); Num++;           //The people that ID is i+1 remove.  add 1. 
    34                 
    35             }
    36          }
    37         if (Num == M-1)                                               //The rest of people is one. Out of the loop.
    38             break;
    39       }    
    40     }
    41     
    42     for (int j = 0; j < M; j++){
    43         if (k[j]==1)
    44         printf("The last people ID is %d", j+1);
    45 
    46     }
    47     system("pause");
    48 }
  • 相关阅读:
    指针
    使用函数
    数组,切片和字典
    CUDA 进阶学习
    makefile 常用函数
    内存(RAM或ROM)和FLASH存储的真正区别总结
    射频,系带,调制解调器
    固态激光雷达
    毫米波雷达
    对比感知技术的硬件或者算法的关键技术指标
  • 原文地址:https://www.cnblogs.com/udld/p/4051158.html
Copyright © 2011-2022 走看看