48.孩子们的游戏(圆圈中最后剩下的数)
题目描述:
每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。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.孩子们的游戏(圆圈中最后剩下的数)相关推荐
- 孩子们的游戏(圆圈中最后剩下的数)
题目:孩子们的游戏(圆圈中最后剩下的数) 题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首 ...
- 剑指offer:孩子们的游戏(圆圈中最后剩下的数)
题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他随机指 ...
- java输出带圆圈数字_java实现孩子们的游戏(圆圈中最后剩下的数)
题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他随机指 ...
- java名侦探柯南游戏大全_孩子们的游戏(圆圈中最后剩下的数),Java代码实现思路分享...
下面给大家分享的是一个Java代码实例,下面一起来了解一下吧. 抽象建模能力 题目: 让小朋友们围成一个大圈,之后,随机指定一个数m,让编号为0的小朋友开始报数. 每一次,喊到了m-1的那个小朋友要出 ...
- 46. 孩子们的游戏-圆圈中最后剩下的数字
题目描述: 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他随机 ...
- 《剑指offer》-- 栈的压入与弹出序列、把字符串转化为整数、扑克牌顺子、孩子们的游戏(圆圈中最后剩下的数)
一.栈的压入与弹出序列: 1.题目: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序. 假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序 ...
- 剑指offer-孩子们的游戏(圆圈中最后剩下的数)
题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他随机指 ...
- 剑指offer:圆圈中最后剩下的数
题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他随机指 ...
- 剑指offer打卡|圆圈中最后剩下的数
题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他随机指 ...
最新文章
- micropythonesp8266的温度湿度_用ESP8266上传温湿度给ONENET(不需要arduino)
- Error code:1728 Cannot load from mysql.proc. The table is probably corrupted
- php错误密码也能登陆账号,php用户登陆代码(限制用户错误登录次数)(1/2
- css( div和span)——读书笔记
- 【算法+OpenCV】基于三次Bezier原理的曲线拟合算法C++与OpenCV实现
- IBASE category 设置为01的情况下 IBASE自动创建情况
- Qt网络程序:基于TCP的服务器、客户端实例
- 写一个使两个整数进行交换的方法(不能使用临时变量) 【前端每日一题-27】...
- AS3编码规范(转)
- [watchtower] 自动更新 Docker 镜像与容器
- python+sklearn利用特征文件来训练和测试模型并使用joblib方法持久化存储模型
- 关注SharePoint 2010 ,更要关注InfoPath 2010!
- CocoStudio 骨骼动画制作过程
- 廖雪峰Python教程梳理
- aix系统查看服务器型号齐全,查看AIX系统位数
- adobe flash java_Adobe 发布最后的 Flash 更新:官方强烈建议立即卸载
- 银行常用加密算法PINBlock加密
- NLP-对话聊天机器人
- 一次小米路由器3刷机的翻车记录
- vue使用组件化思想实现一个简单的购物车页面
热门文章
- vue 自定义指令(directive)实例
- HomeHack:黑客如何控制 LG 的 IoT 家用设备
- IIS Web怪问题: Access is denied due to invalid credentials.
- 中油C语言第一次在线作业,中石油华东《程序设计(C语言)》2020年春季学期在线作业(二)...
- word受权限保护无法打开_保护S71500程序的几种方式
- python 内置_python 内置
- python 主线程_Python threading多线程模块
- python考勤记录_python连接中控考勤机分析数据
- assert函数_悉数Python函数传参的语法糖
- 对java的final,finally,finalize应用场景,你用对了吗