C/C++——猴子选大王(PTA)

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

超详注释! 包你一秒钟都看不懂!

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;//慢指针更新数组,每次循环前重
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值