码迷,mamicode.com
首页 > 其他好文 > 详细

OI养老专题01:约瑟夫问题

时间:2019-04-23 19:18:10      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:res   约瑟夫问题   ati   数组   空格   --   暴力   包括   表示   

  有M个人,其编号分别为1-M。这M个人按顺序排成一个圈。现在给定一个数N,从第一个人开始依次报数,数到N的人出列,然后又从下一个人开始又从1开始依次报数,数到N的人又出列...如此循环,直到最后一个人出列为止。

  输入只有一行,包括2个整数M(8 <= M <= 15 ),N( 5 <= N <= 32767 )。之间用一个空格分开。

  输出M行,每行一个整数,表示每次出列的人的编号。


  好养老的一道经典题啊......为什么不回忆一下刚学OI时的愚钝,暴力模拟一下呢?反正刚学OI时也是这么做的......

  一开始想用指针,但是发现敲不来(菜);然后改用邻接表,发现也敲不来......反正这么菜,干脆打vis数组好了,遇到vis[i]=1就跳过:

for(int i=1,cnt=1,res=m;res>=1;i=i%n+1) if(!vis[i]){
    if(!cnt) printf("%d\n",i),vis[i]=true,res--;
    cnt=(cnt+1)%n;
}

  是不是很养老~反正这个数据范围的题是水得过去的。

 

OI养老专题01:约瑟夫问题

标签:res   约瑟夫问题   ati   数组   空格   --   暴力   包括   表示   

原文地址:https://www.cnblogs.com/akura/p/10758080.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!