#20-4 PTA 7-28 猴子选大王

这篇博客主要探讨了一道编程题目——猴子选大王。通过C语言实现了一个算法,该算法根据输入的数字n,模拟猴子选大王的过程,直至剩下最后一位大王。在代码中,作者使用了循环和计数器来处理这一问题,逐步减少猴子的数量,直到只剩下一个。文章适合对算法和编程感兴趣的读者阅读。

题目描述

一群猴子要选新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号。从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。如此不断循环,最后剩下的一只猴子就选为猴王。请问是原来第几号猴子当选猴王?

输入

在这里插入图片描述

输出

在这里插入图片描述

样例输入

在这里插入图片描述

样例输出

在这里插入图片描述

源代码

#include<stdio.h>
int main() 
{
	int n;
	scanf("%d", &n);
	int mk[1000] = { 0 };
	int i, j;
	for (i = 0; i < n; i++)
	{
		mk[i] = 1;
	}
	int cnt = 1;
	int max = 3;
	int sum = n;
	i = 0;
	while (1)
	{
		if (sum == 1)
			break;
		if (cnt == max && mk[i]==1)
		{
			cnt = 1;
			sum--;
			mk[i] = 0;
		}
		else if (mk[i]==1)
		{
			cnt++;
		}
		i++;
		i = i % n;
	}
	
	for (i = 0; i < n; i++)
	{
		if (mk[i] == 1)
		{
			printf("%d", i + 1);
		}
	}
	
	return 0;

}

关于这题

这题和上一题猴子报数很像,较为简单一些 核心点 是用数组判断猴子是否退出从而达到目的
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值