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 }
  • 相关阅读:
    Linux常用命令-学习笔记
    Linux 输入输出重定向
    Linux 网卡配置参数
    JS Promise对象学习
    Linux用户身份与文件权限学习笔记
    4、点击事件
    3、自定义按压效果
    2、自定义背景形状
    1、文字大小,颜色
    5、跑马灯
  • 原文地址:https://www.cnblogs.com/udld/p/4051158.html
Copyright © 2011-2022 走看看