21xrx.com
2025-03-27 14:23:56 Thursday
文章检索 我的文章 写文章
C++ 数组实训:猴子选大王
2023-06-22 14:26:40 深夜i     29     0
C++ 数组 实训 猴子 选大王

在C++学习的过程中,数组作为一个重要的数据结构,常常被应用于实际问题的解决中,本文将介绍一道有趣的练习题——猴子选大王,通过这道题目的实现,我们将巩固数组的应用能力。

题目描述:

一群猴子排成一列,每只猴子有一个编号,编号为 1,2,3 …… n。每只猴子有一个投票权,他要么投票给左邻居,要么投票给右邻居,但是他不能投给自己。投票结束后,得票最多的猴子成为大王,如果得票数相同,编号小的猴子成为大王。编写程序,输入猴子数量 n,以及每个猴子投票的方向(1表示向左投票,2表示向右投票),输出最后的大王编号。

思路:

我们可以利用一个数组存储每只猴子的编号,另外再定义一个数组存储每只猴子票数,根据每只猴子的投票方向,更新数组中每只猴子的得票数,最后找出得票最多的猴子即可。

具体代码实现如下:

#include<iostream>
#include<cstdio>
using namespace std;
const int maxn = 105;
int a[maxn], vote[maxn];
int main()
{
  int n, sum = 0;
  cin >> n;
  for(int i = 1; i <= n; i++)
    a[i] = i;
  for(int i = 1; i <= n; i++)
  {
    int direction;
    cin >> direction; //输入每个猴子的投票方向
    if(direction == 1)
    {
      vote[i-1]++;
    }
    else if(direction == 2)
    {
      vote[i+1]++;
    }
  }
  for(int i = 1; i <= n; i++) //寻找得票最多的猴子
  {
    if(vote[i] > vote[sum])
      sum = i;
  }
  cout << a[sum] << endl; //输出大王的编号
  return 0;
}

这个代码非常简单,我们可以用数组存储每只猴子的编号和得票数,通过输入每只猴子的投票方向,更新得票数数组,最后找到得票最多的猴子,输出其编号即可。

总结:

通过实现这个有趣的题目,我们可以巩固自己的C++数组应用的能力,同时,也能锻炼自己的逻辑思维。在以后的学习和工作中,数组是一个常用的数据结构,我们需要经常练习这种类型的题目,以便熟练掌握其应用方法和技巧。

  
  

评论区

请求出错了