超详注释! 包你一秒钟都看不懂!
2022-7-13更新:
昨天做力扣的#27移除元素,学会了双指针法,今天突然想起这道题,发现可以参考参考双指针。
附上题目:
本关任务:编写一个函数 ki ng,实现猴子选大王的功能。
新猴王的选择方法是:让 n 只候选猴子围成一圈(最多100只猴子),从某位置起顺序编号为 1 ~ n 号。从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。如此不断循环,最后剩下的一只猴子就选为猴王。
测试输入:5
预期输出:4测试输入:18
预期输出:14
注意:
1.题目要求猴子们按照123123..报数,等效于123456..n中,3的倍数被淘汰
2.可根据题目要求报3,报5,报n,等等自行对淘汰条件,以及count的重置进行更改
using namespace std;
#include<iostream>
int main () {
//一: 初始化。 猴子数组存储其对应下标
//注意,猴子从1报数,闲置Monkey[0] ,从Monkey[1]开始存储
int Monkey[100],n;
cout<<"请输入猴子数目:";
cin>>n;
for(int i=1; i<=n; i++) {
Monkey[i]=i;//存储对应下标
}
//二,开始报数以及淘汰。 参考双指针法变形 (多了一个报数而已)
int count=0,slow;//注意count定义为1 或 定义为0 ,对后续有一定影响
while(n!=1) {
//第一步,for循环遍历所有健在猴子,进行一轮淘汰
slow=0;//慢指针更新数组,每次循环前重

这篇博客详细介绍了如何使用C/C++编程解决猴子选大王的问题,通过双指针法实现。作者在2022年7月13日的更新中提到,受力扣#27移除元素问题启发,应用双指针策略解决猴王选举问题。文章提供测试用例,并强调关键在于找到每轮中被淘汰的猴子(报数为3的倍数)。博客还包含了作者的代码实现和对其他C语言解法的学习心得。
最低0.47元/天 解锁文章





