当前位置: 首页 > news >正文

2025-02-23 学习记录--C/C++-PTA 7-28 猴子选大王

合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻

一、题目描述 ⭐️

在这里插入图片描述

二、代码(C语言)⭐️

#include <stdio.h>int main() {int n;int currentMonkeyIndex = 0; // 当前猴子的指针索引值。默认从0开始int currentMonkeySaying = 1; // 当前猴子的报数:范围是1~3,若为3,则被踢出。默认从1开始int outTotal = 0; // 被踢出的猴子总数。默认从0开始scanf("%d",&n);int arr[n]; // 数组:存放猴子编号for(int i = 0; i < n; i++) {// 将猴子编号放入数组中,从1开始arr[i] = i + 1;}// 当被踢出的猴子总数 等于 n-1 时(即 只剩一个猴子未被踢出时),才停止while循环。while(outTotal < n - 1) {// 如果当前猴子的编号不为0,则报数:默认是1,范围是1~3,若为3,则被踢出。if(arr[currentMonkeyIndex] != 0) {// 若当前猴子的报数为3,则被踢出,即 将其编号置为0if(currentMonkeySaying == 3) {// 将该猴子编号置为0arr[currentMonkeyIndex] = 0;// 下一个猴子报数为1currentMonkeySaying = 1;// 被踢出的猴子总数加1outTotal++;} else {// 报数,然后 加1 给下一个猴子用currentMonkeySaying++;}}/** 当前猴子已处理完毕 */// 指针指向下一位,索引值右移一位currentMonkeyIndex++;// 如果指针(从0开始)指向数组的最后一位,则回到起始点if(currentMonkeyIndex == n) {currentMonkeyIndex = 0;}}// 找到数组中编号不为0的唯一猴子,输出其编号for(int i = 0; i < n; i++) {if(arr[i] != 0) {printf("%d",arr[i]);// 找到就退出for循环,减少时间复杂度break;}}return 0;
}

在这里插入图片描述


http://www.mrgr.cn/news/92278.html

相关文章:

  • 【MySQL】基础篇
  • Web刷题之PolarDN(中等)
  • IO/网络IO基础全览
  • 本地VSCode远程连wsl2中的C++环境的开发配置指南
  • 【DeepSeek】-macOS本地终端部署后运行DeepSeek如何分析图片
  • MySQL数据库连接池泄露导致MySQL Server超时关闭连接
  • EasyExcel 实践案例:打印工资条
  • 基于SpringBoot的“流浪动物救助系统”的设计与实现(源码+数据库+文档+PPT)
  • TLS与自签名证书的创建、作用、用到的工具等知识的介绍
  • Remainder Problem CF1207F
  • Python Django系列—入门实例
  • 垃圾回收算法
  • 【前端】Axios AJAX Fetch
  • 【NLP 23、预训练语言模型】
  • git 命令 设置别名
  • 代码随想录算法训练营第九天| 151.翻转字符串里的单词、右旋转字符串 、28. 实现 strStr()、459.重复的子字符串、字符串总结
  • ONNX转RKNN的环境搭建和部署流程
  • eclogy后台运维笔记(写的很乱,只限个人观看)
  • 大连本地知识库的搭建--数据收集与预处理_01
  • 图论入门算法:拓扑排序(C++)