孩子们的游戏(圆圈中最后剩下的数)--约瑟夫环问题
来源:互联网 发布:开票接口软件使用 编辑:程序博客网 时间:2024/05/19 13:58
题目描述
每年六一儿童节,NowCoder都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为NowCoder的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0…m-1报数….这样下去….直到剩下最后一个小朋友,可以不用表演,并且拿到NowCoder名贵的“名侦探柯南”典藏版(名额有限哦!!^_^)。请你试着想下,哪个小朋友会得到这份礼品呢?
解题思路:
约瑟夫环问题
利用数组解决此题。用数组模拟圆来表示循环,当循环到array[n]时,再次从array[0]开始循环。
实际操作:
public int LastRemaining_Solution(int n, int m) { if (n<1 || m<1) return -1; //测试用例为0,0时,返回-1 int[] array=new int[n]; //将人数转化为数组的形式 int i=-1; int num=n; int loopNum=0; while (num>0) { i++; //记录人数 if (i==n) i=0; //将数组转化成圆。 if (array[i]==1) continue; //跳过标记为1的数字 loopNum++; //记录数字 if (loopNum==m) { array[i]=1; //标记数组 loopNum=0; num--; } } return i; }
0 0
- 孩子们的游戏(圆圈中最后剩下的数)--约瑟夫环问题
- 孩子们的游戏(圆圈中最后剩下的数)(约瑟夫环问题)
- 剑指offer — 孩子们的游戏(圆圈中最后剩下的数)约瑟夫环问题
- 孩子们的游戏(圆圈中最后剩下的数)&约瑟夫问题I
- 1356孩子们的游戏(圆圈中最后剩下的数)--即约瑟夫环
- 九度OJ 1356:孩子们的游戏(圆圈中最后剩下的数) (约瑟夫环)
- 剑指Offer--045-孩子们的游戏(圆圈中最后剩下的数)--约瑟夫环
- 约瑟夫环 (孩子们的游戏(圆圈中最后剩下的数))
- 约瑟夫环——孩子们的游戏(圆圈中最后剩下的数)
- 孩子们的游戏(圆圈中最后剩下的数)。。。约瑟夫环
- 孩子们的游戏(圆圈中最后剩下的数)
- 孩子们的游戏(圆圈中最后剩下的数)
- 孩子们的游戏(圆圈中最后剩下的数)
- 孩子们的游戏(圆圈中最后剩下的数)链表
- 牛客网 | 孩子们的游戏(圆圈中最后剩下的数)
- 孩子们的游戏(圆圈中最后剩下的数)
- 孩子们的游戏(圆圈中最后剩下的数)
- 孩子们的游戏(圆圈中最后剩下的数)
- HTML-DIV布局1
- 第十六周上机时间项目——项目1—小玩文件2
- 面试题15:链表中倒数第K个节点
- set、list和数组相互转换
- 面试题16:反转链表
- 孩子们的游戏(圆圈中最后剩下的数)--约瑟夫环问题
- 面试题17:合并两个排序的链表
- uva1152
- 聊聊Linux动态链接中的PLT和GOT(1)——何谓PLT与GOT
- SHELL编程之特殊符号
- C#编程之JSON序列化与反序列化
- 面试题18:树的子结构
- 面试题19:二叉树的镜像
- GDI+(画图工具的创建)