Let the Balloon Rise——HDU-1004

本文介绍了一种统计多个测试用例中出现次数最多的气球颜色的算法。通过使用输入数组、输出数组和计数数组,结合while和for循环,实现了对每个测试用例的处理,最终输出了出现次数最多的气球颜色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目

在这里插入图片描述

题目简述

输入包含多个测试用例,每个测试用例先输入一个N,接下来有N行,每行输入一串最多15个小写字母(气球的颜色),如果N=0,则终止输入并且不处理该测试用例。对于每个测试用例,输出气球最多的颜色。

思路

分别定义一个输入数组in和一个输出数组ou和一个计数数组num,使用while循环实现多个测试用例的输入。对于每个测试用例,在输入N后,使用for循环逐个输入字符串(气球的颜色),将第一行的气球的颜色in[0]通过串复制赋值给ou[0],从第二行开始,每输入一个字符串,判断其与之前的输入的字符串是否相同,若相同,对应的计数数组num[k]自增一次;若不同,则将该字符串赋值给一个新的输出数组ou[k+1]。完成输入后,通过一个循环查找计数数组中的最大值num[i],并记录该值的下标,输出该下标对应的输出数组中的字符串ou[i]即可。

代码实现

#include<iostream>
#include<cstring>
#include<stdio.h>
using namespace std;
int main()
{
	char in[1001][16], ou[1001][16];
	int num[1001] = { 0 }, n;
	while (scanf("%d", &n) != EOF && n)
	{
		if (n == 0) break;
		int j = 0;
		for (int i = 0; i < n; i++)
		{
			int work = 1;
			scanf("%s", in[i]);
			strcpy(ou[0], in[0]);
			for (int k = 0; k < j; k++)
			{
				if (strcmp(in[i], ou[k]) == 0) { num[k]++; work = 0; }
			}
			if (work)
			{
				strcpy(ou[j + 1], in[i]);
				j++;
				num[j] = 1;
			}
		}
		int pos = 0;
		int max = 0;
		for (int i = 0; i < n; i++)
		{
			if (num[i] > max)
			{
				max = num[i];
				pos = i;
			}

		}
		cout << ou[pos] << endl;
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值