题目描述

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

解题思路

本题是典型的约瑟夫环问题,考虑用函数f(n)表示0~n-1共n个数字中最后剩下的数字,去掉的数字为(m-1)%n,由于下一次报数是从第m%n个数字开始,因此f(n-1)中数字和f(n)中数字对应关系依次为

f(n-1)         f(n)

0                m%n

1               (m+1)%n

…               …

n-2             (m-2)%n

可以归纳出两者之间的关系:f(n)= (f(n-1)+ m)% n  当n=1时,圆圈中剩下的数字一定为0,所以递推关系如下:

f(n)= 0                     n=1

(f(n-1)+ m)% n     n>1

代码

 1 class Solution {
 2 public:
 3     int LastRemaining_Solution(int n, int m)
 4     {
 5         if(n<1||m<1)
 6             return -1;
 7         int l=0;
 8         for(int i=2;i<=n;i++)
 9             l=(l+m)%i;
10         return l;
11     }
12 };

转载于:https://www.cnblogs.com/wmx24/p/8950419.html

剑指offer-孩子们的游戏(圆圈中最后剩下的数)相关推荐

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

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

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

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

  3. 【算法-剑指 Offer】62. 圆圈中最后剩下的数字(环形链表;约瑟夫环;动态规划)

    剑指 Offer 62. 圆圈中最后剩下的数字 - 力扣(LeetCode) 发布:2021年9月12日12:18:52 问题描述及示例 0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每 ...

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

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

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

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

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

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

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

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

  8. 【剑指offer】_13 圆圈中最后的数

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

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

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

  10. 剑指 Offer II 014. 字符串中的变位词

    剑指 Offer II 014. 字符串中的变位词 题目 示例 解答 题目来源为leetcode 题目 给定两个字符串s1和s2,写一个函数来判断s2是否包含s1的某个变位词. 换句话说,第一个字符串 ...

最新文章

  1. 华为机考HJ1字符串最后一个单词的长度
  2. 发条js调试工具_小工具大帮手,利用 @open-node/antman 实现 node.js 进程线上调试,无须重启...
  3. 【线段树合并】解题报告:luogu P4556雨天的尾巴 (树上对点差分 + 动态开点 + 线段树合并)线段树合并模板离线/在线详解
  4. 太厉害了!目前 Redis 可视化工具最全的横向评测
  5. Node.js:Web模块、文件系统
  6. boost::allocator_void_pointer
  7. redis 中一个字段 修改map_Redis bitmap 位图 从入门到精通 基础 实战 妙用
  8. 业务赋能利器之外卖特征档案
  9. UmiJS 是一个 react 开发框架
  10. bzoj 1055: [HAOI2008]玩具取名(区间DP)
  11. Linux ALSA 音频系统:物理链路篇
  12. 【人脸表情识别】基于matlab GUI LBP+SVM脸部动态特征人脸表情识别【含Matlab源码 1369期】
  13. 推荐C语言编译器(手机APP)
  14. p37 p38 p39 p40 p41
  15. OpenNLP进行自然语言处理
  16. 车联网目前在我国主要的应用市场
  17. 文理学院的数学计算机方向夏校,美国大学夏校.doc
  18. 欧元区风险担忧情绪依然存在,美元震荡上扬
  19. 雅虎通8.3版本发布!
  20. Python replace() 方法

热门文章

  1. PyQt5 技术篇-QWidget、Dialog设置界面固定大小、不可拉伸方法实例演示
  2. 操作系统-并发性:互斥与同步
  3. [YTU]_2575( 交通工具信息)
  4. [YTU]_2435 ( C++ 习题 输出日期时间--友元函数)
  5. mysql conflicts with_安装MYSQL错误“conflicts with file from package mysql-libs-*” 解决方法...
  6. 【R语言-20行代码】牛顿迭代法求伽马函数极大似然估计法的参数估计
  7. new Scanner(1.txt);读取不到文件中的数据
  8. assert() (C++) 非常简单!
  9. 从Proxy到Vue3数据绑定
  10. 数据库路由中间件MyCat - 源代码篇(7)