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

     1 //挺有意思的小游戏,可以在N,M这里改动数据。
     2 #include<stdio.h>
     3 #include<stdlib.h>
     4 #define N 41//总人数
     5 #define M 3//数到3 出列
     6 int main(void) {
     7     int people[N] = { 0 };
     8     int coun = 1, i = 0, pos = -1;
     9     int alive = 0;//或者的人数
    10 
    11     while (coun <= N) {
    12         pos = (pos + 1) % N;//环状处理
    13         if (people[pos] == 0)    i++;//如果没有报到该数,则继续往下
    14         if (i == M) { 
    15             i = 0; 
    16             people[pos] = coun;//表明第coun个出局的人的编号
    17             coun++;
    18         }//重新报数了呗
    19     }
    20 
    21     printf("
    约瑟夫排列(最初位置--约瑟夫环位置): 
    ");
    22     for (i = 0; i < N; i++) {
    23         printf("%d %d    ", i + 1, people[i]);
    24         if (i != 0 && i % 10 == 0)    printf("
    ");//输出10个换行
    25     }
    26 
    27     printf("
    
    准备剩下的人数: ");
    28     scanf("%d", &alive);
    29     printf("这%d个人初始位置应该排在下列序号处:
    ", alive);
    30 
    31     alive = N - alive;//计算需要跳过的人数的编号,跳过20个,alive就是20,
    32     //下面是查找需要保留的编号
    33     for (i = 0; i < N; i++)    if (people[i] > alive)    printf("初始序号: %d, 约瑟夫环序号: %d
    ", i + 1, people[i]);
    34     printf("
    ");
    35     return 0;
    36 
    37 }
  • 相关阅读:
    c中的数组与字符串
    c中的函数
    C中的流程控制
    c中的基本运算
    scanf函数
    c中的数据类型、常量、变量
    c中的关键字、标识符、注释
    ios必须知道的事情
    安卓开发之获取SD卡空间数据
    安卓日志猫的使用
  • 原文地址:https://www.cnblogs.com/letianpaiai/p/12903684.html
Copyright © 2011-2022 走看看