题目描述:

  每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数....这样下去....直到剩下最后一个小朋友,可以不用表演,并且拿到牛客名贵的“名侦探柯南”典藏版(名额有限哦!!^_^)。请你试着想下,哪个小朋友会得到这份礼品呢?(注:小朋友的编号是从0到n-1)

思路分析:

  该题是经典的约瑟夫环问题,我们可以有两种解法。

  解法1:用数组模拟一个环,然后从数组的第一个元素开始计数,到m将对应元素的值赋为-1,表示这个人已经出列,然后出列n-1次,最后剩下的就是答案。

  解答2:利用动态规划的思想用f(n,m)的值表示有n个孩子,每次出去第m个,最后剩下孩子的坐标。那么f(n,m)=(f(n-1,m)+m)%n。所以我们只要求出f(n-1,m)的值就能得到f(n,m)的值。

代码:

解法1:

public class Solution {/**用一个数组来模拟约瑟夫环。*/public int LastRemaining_Solution(int n, int m) {int []kid=new int [n];int step=0;int count=n;   //一共要出来n-1个儿童。int i=-1; //记录位置的变化。if(n<1||m<1)return -1;while(count>0){i++;if(i==n)i=0;      //模拟环if(kid[i]==-1)continue;   //相当于这个人已经出列step++;if(step==m){step=0;kid[i]=-1;count--;}}return i;}
}

解法2:

public class Solution{
public int LastRemaining_Solution(int n, int m){if(n<1||m<1)return -1;int []dp=new int [n+1]; //dp[i]表示有i个人的时候,每次出去第m个人,最后剩下的人的坐标dp[0]=-1;dp[1]=0;for(int i=2;i<=n;i++){dp[i]=(dp[i-1]+m)%i;}return dp[n];}
}

转载于:https://www.cnblogs.com/yjxyy/p/10935378.html

48.孩子们的游戏(圆圈中最后剩下的数)相关推荐

  1. 孩子们的游戏(圆圈中最后剩下的数)

    题目:孩子们的游戏(圆圈中最后剩下的数) 题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首 ...

  2. 剑指offer:孩子们的游戏(圆圈中最后剩下的数)

    题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他随机指 ...

  3. java输出带圆圈数字_java实现孩子们的游戏(圆圈中最后剩下的数)

    题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他随机指 ...

  4. java名侦探柯南游戏大全_孩子们的游戏(圆圈中最后剩下的数),Java代码实现思路分享...

    下面给大家分享的是一个Java代码实例,下面一起来了解一下吧. 抽象建模能力 题目: 让小朋友们围成一个大圈,之后,随机指定一个数m,让编号为0的小朋友开始报数. 每一次,喊到了m-1的那个小朋友要出 ...

  5. 46. 孩子们的游戏-圆圈中最后剩下的数字

    题目描述: 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他随机 ...

  6. 《剑指offer》-- 栈的压入与弹出序列、把字符串转化为整数、扑克牌顺子、孩子们的游戏(圆圈中最后剩下的数)

    一.栈的压入与弹出序列: 1.题目: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序. 假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序 ...

  7. 剑指offer-孩子们的游戏(圆圈中最后剩下的数)

    题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他随机指 ...

  8. 剑指offer:圆圈中最后剩下的数

    题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他随机指 ...

  9. 剑指offer打卡|圆圈中最后剩下的数

    题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他随机指 ...

最新文章

  1. micropythonesp8266的温度湿度_用ESP8266上传温湿度给ONENET(不需要arduino)
  2. Error code:1728 Cannot load from mysql.proc. The table is probably corrupted
  3. php错误密码也能登陆账号,php用户登陆代码(限制用户错误登录次数)(1/2
  4. css( div和span)——读书笔记
  5. 【算法+OpenCV】基于三次Bezier原理的曲线拟合算法C++与OpenCV实现
  6. IBASE category 设置为01的情况下 IBASE自动创建情况
  7. Qt网络程序:基于TCP的服务器、客户端实例
  8. 写一个使两个整数进行交换的方法(不能使用临时变量) 【前端每日一题-27】...
  9. AS3编码规范(转)
  10. [watchtower] 自动更新 Docker 镜像与容器
  11. python+sklearn利用特征文件来训练和测试模型并使用joblib方法持久化存储模型
  12. 关注SharePoint 2010 ,更要关注InfoPath 2010!
  13. CocoStudio 骨骼动画制作过程
  14. 廖雪峰Python教程梳理
  15. aix系统查看服务器型号齐全,查看AIX系统位数
  16. adobe flash java_Adobe 发布最后的 Flash 更新:官方强烈建议立即卸载
  17. 银行常用加密算法PINBlock加密
  18. NLP-对话聊天机器人
  19. 一次小米路由器3刷机的翻车记录
  20. vue使用组件化思想实现一个简单的购物车页面

热门文章

  1. vue 自定义指令(directive)实例
  2. HomeHack:黑客如何控制 LG 的 IoT 家用设备
  3. IIS Web怪问题: Access is denied due to invalid credentials.
  4. 中油C语言第一次在线作业,中石油华东《程序设计(C语言)》2020年春季学期在线作业(二)...
  5. word受权限保护无法打开_保护S71500程序的几种方式
  6. python 内置_python 内置
  7. python 主线程_Python threading多线程模块
  8. python考勤记录_python连接中控考勤机分析数据
  9. assert函数_悉数Python函数传参的语法糖
  10. 对java的final,finally,finalize应用场景,你用对了吗