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

    题目描述

    n个人(n<=100)围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人再出圈,……依次类推,直到所有的人都出圈,请输出依次出圈人的编号.

    经典的约瑟夫环!   f(n,k)=(f(n-1,k)+k)%n  详情看着篇 :  http://www.tuicool.com/articles/yMniuq

    代码如下:

     1 #include <bits/stdc++.h>
     2 
     3 using namespace std;
     4 int n,m;
     5 queue<int>q;
     6 int main()
     7 {
     8     scanf("%d%d",&n,&m);
     9     for (int i=1;i<=n;++i)
    10     q.push(i);
    11     int i=1;
    12     while (!q.empty())
    13     {
    14         if (i==m)
    15         {
    16             printf("%d",q.front());
    17             if (q.size()!=1)
    18             printf(" ");
    19             else
    20             printf("
    ");
    21             q.pop();
    22             i=1;
    23         }
    24         q.push(q.front());
    25         q.pop();
    26         i++;
    27     }
    28     return 0;
    29 }
  • 相关阅读:
    将博客搬至CSDN
    defender 月考总结
    生日祝福@陈俊翰
    个性签名
    你这是virus吧?
    (CPSCA's)CPOJC+VIJOS
    Sentence by defender
    工作制一览
    最长上升子序列
    mysql约束
  • 原文地址:https://www.cnblogs.com/agenthtb/p/5866656.html
Copyright © 2011-2022 走看看