算法创作|找出游戏的获胜者问题解决方法

问题描述共有 n 名小伙伴一起做游戏。小伙伴们围成一圈,按 顺时针顺序 从 1 到 n 编号。确切地说,从第 i 名小伙伴顺时针移动一位会到达第 (i+1) 名小伙伴的位置,其中 1 <= i < n ,从第 n 名小伙伴顺时针移动一位会回到第 1 名小伙伴的位置。游戏遵循如下规则:从第 1 名小伙伴所在位置 开始 。沿着顺时针方向数 k 名小伙伴,计数时需要 包含 起始时的那位小伙伴。逐个绕圈进行计数,一些小伙伴可能会被数过不止一次。你数到的最后一名小伙伴需要离开圈子,并视作输掉游戏。如果圈子中仍然有不止一名小伙伴,从刚刚输掉的小伙伴的 顺时针下一位 小伙伴 开始,回到步骤 2 继续执行。否则,圈子中最后一名小伙伴赢得游戏。给你参与游戏的小伙伴总数 n ,和一个整数 k ,返回游戏的获胜者。来源:力扣(LeetCode)实例1:输入:n = 5, k = 2输出:3实例2:输入:n = 6, k = 5输出:1解决方案由题目的意思,我们可以为小伙伴们编号,有多少位小伙伴,就有多少号,由n = 5,k = 2我们可以得出第一位输掉比赛的是2,然后又由第三位小伙伴开始淘汰掉4,游戏到这里还剩下三位小伙伴,分别是1 3 5,到第五位小伙伴时,又要回到开头,也就是将1淘汰,依次像这样进行,直到只剩下一位小伙伴时游戏结束,该伙伴则为获胜者。

为实现上述条件,我们往往采用的方法是取模,取模也就是我们常说的的余数,我们可以很快的发现余数(z)也被除数(x)之间的关系(0 <=z < x),在python中,这一关系可以实现一种循环,可以很好的帮我们解决问题,因此本题也可以运用取模这一方法。代码清单n = int(input())k = int(input())lis = [i for i in range(1,n+1)]a = 0while len(lis) != 1:a = (a + (k-1))%len(lis) # 取模,加a是为了每次淘汰一人时,都能从该位置继续向下,继续游戏lis.pop(a)print(lis[0])结语每当我们做题时,都要先理清我们的思路,用什么方法能将该题解决出来,能否用代码表示出来。无论我们在做什么时,思路最为重要。此外,我们还可以思考有没有其它方法可以解决该问题,要知道每个题都不只一种方法可以解决,因此我们还可以多锻炼我们的思路,加强我们的逻辑能力,这样才能让我们越来越厉害。实习编辑:衡辉作者:齐华军、吴合力、黄曰标

(0)

相关推荐

  • 输掉你输掉了全部

    输掉你输掉了全部

  • 早安心语:不要艳羡他人,不要输掉自己。学着爱自己!

    无论你活成什么样子,背地里都会有人对你说三道四.不申辩不计较一笑了之,其实就是最好的蔑视. 早安~[太阳] 迷途漫漫,终有一归.--米兰·昆德拉 "只要内心不乱,外界就很难改变你什么.不要艳 ...

  • 分析了20年来1353万个得分情况后,研究人员有两个惊人发现

    去年7月份,ATP和Infosys联合开展了一次统计分析,他们将1991-2020年大满贯和ATP巡回赛上的13,536,026个得分的分布情况进行了统计,结果显示获胜者平均得分率为55%,落败者则获 ...

  • 算法创作|栈的应用——括号匹配问题解决方法

    问题描述假设我们有一个复杂的字符串,里边包含了多种括号的嵌套,如下图: 这时候人为地用肉眼去判断其中的括号是否匹配是一件非常麻烦的事,不仅耗时耗力,而且准确率极低.那么,有什么方法可以帮助我们高效地进 ...

  • 算法创作|得到的最晚有效时间问题解决方法

    问题描述你一个字符串 time ,格式为 hh:mm(小时:分钟),其中某几位数字被隐藏(用 ? 表示).有效的时间为 00:00 到 23:59 之间的所有时间,包括 00:00 和 23:59 . ...

  • 算法创作|蓝桥杯关于成绩统计问题解决方法

    标题问题描述示例:小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数.如果得分至少是 60 分,则称为及格.如果得分至少为 85 分,则称为优秀.请计算 ...

  • 算法创作|随机出10道题并计算正确率问题解决方法

    问题描述用文字描述要解决的问题是什么.示例:随机出10道题并计算正确率输入:你的结果输出:你是否正确并出下一道题,10道题之后计算正确率解决方案把+.-.*./四个算数运算符号随机选择,n1代表随机在 ...

  • 算法创作|模拟抽卡游戏抽卡问题解决方法

    引言震惊!全网最火某网游抽卡模拟流出.问题描述输入抽卡次数X,得出抽卡结果示例:输入:X输出:UR(SSR,SR,R)解决方案在如今大部分抽卡游戏中,抽卡都是一个结果未知的行为,所以运用random可 ...

  • 2021/03/18【肝癌】找出阻断肝癌发生的方法

    阻断肝癌 导演老孙找到最新的肝癌发生线路图,可以跳过肝硬化阶段,直接发生肝癌!到底肝癌线路图里有什么奥秘?阻断肝癌的发生,专家又有哪些妙招呢? 肝癌是一个隐性杀手,因为肝脏没有敏感的神经,所以早期肝癌 ...

  • 找出阻断肝癌发生的方法

    一.肝癌治疗: 手术方案的制定和实施很重要,可以通过3D重建技术,来准确的制定治疗方案. 二.阻断肝癌的方法:4张体检表里的奥秘 1.乙肝5项 第一项尤为重要,只要这一辈子有一次乙肝病毒表面抗原是阳性 ...

  • 如何用手机远程协助长辈?我找出了6个最佳方法!(免ROOT)

    最近我婆婆头一次换了部智能手机,难免这也得教那也得教 但毕竟没办法随时亲身面授,我就想研究下怎么「远程控制手机」 虽然我去年已经写过一篇远程控制相关的文章,不过主要内容只涉及了「电脑控制电脑」.「手机 ...

  • 癌症为什么致命?科学家从果蝇身上找出延长患者生命的方法

    ▎药明康德内容团队编辑 说到癌症,很多人的第一印象就是致命.然而在很多情况下,癌症致死的原因究竟是什么,其实还没有明确的答案.比如,皮肤之类的非重要器官出现癌症,为什么会置人于死地? 在加州大学伯克利 ...