HOJ刷题笔记

HOJ1004

在这里插入图片描述

首次看题真的一脸懵逼,什么鬼,这是要我们干嘛。然后我们看到题目的输入与输出就会发现就是先规定一个固定大小的收纳字符串的空间,然后再将出现最多的字符串输出就好了。

在这里插入图片描述

弄懂了题目就会发现这道题目很简单了。直接暴力求解,将字符串转换为一个一个数字元素,然后再对其进行计数,最后将最大数对应的字符串输出,然后有一种特殊情况要注意,如果出现多个字符串出现的次数相同且是最多次数时,我们将手动输入中首次出现的那个字符串输出,例如:red blue black ,每个字符串都是出现一次,那么输出的便是最前面的red。下面是代码实现

#include<iostream>
#include<string>
using namespace std;
int main(void)
{
    
    
	int n;
	while(cin>>n&&n!=0)
	{
    
    
		string a1;
		string *str=new string[n];
		int j=0;
		int *p=new int[n];
		for(int i=0;i<n;i++)
			p[i]=0;
		for(int i=0;i<n;i++)
		{
    
    
			cin>>a1;
			int flag=0;
			for(int k=0;k<j;k++)
			{
    
    
				if(a1==str[k])
				{
    
    
					p[k]++;
					flag=1;
				}
			}
			if(flag==0)
			{
    
    
				str[j]=a1;
				j++;
			}
		}
		int max=0;
		int t;
		for(int i=0;i<n;i++)
		{
    
    
			if(max<p[i])
			{
    
    
				max=p[i];
				t=i;
			}
		}
		cout<<str[t]<<endl;
		delete []str;
		delete []p;
	}
	return 0;
}

也可以使用map去完成,那么兴趣的兄弟们可以去试一次。

猜你喜欢

转载自blog.csdn.net/qq_41606378/article/details/102927173