助けてください、これは正しいですか、それともこれより簡単な方法がありますか?

助けてください、これは正しいですか、それともこれより簡単な方法がありますか?

皆さんが私を啓発することを躊躇しないことを願っています!ありがとうございました!
これがタイトルです:
タイトルの説明。
幹部のためにキャンペーンを行う時が来ました。候補者の数を表すn個の数字があります。どの学生が最も投票数が多いか。(複数の人がいる場合は、最小の数値が出力されます。)
入力
1行目に整数n(1≤n≤1000 )を入力します。
2行目に、n個の整数a0、a1、a2、…an-1(1≤ai≤1000)を入力します。
出力
出力は1行を占めます。投票数が最も多い人の数です。
サンプル入力
6
4 1 7 8 8 5
サンプル出力
8

#include<iostream>
using namespace std;
main()
{
    
    
    int n,i,j,f,m,k,a[1000],b[1000],c[1000];
    cin>>n;
    for(i=0;i<n;i++)
    {
    
    
    	cin>>a[i];
	}
	for(i=0;i<n;i++)
	{
    
    
		f=0;
		if(a[i]!=0)
		{
    
    
		    f=1;
			for(j=i+1;j<n;j++)
		    {
    
    
			    if(a[i]==a[j])
			    {
    
    
				    f=f+1;
				    a[j]=0;
			    }
		    }
		}
		b[i]=f;
	}                       // b为不同编号所得票数 
	for(i=0;i<n;i++)
	{
    
    
		c[i]=0;
		if(b[i]!=0)
		{
    
    
		    m=1;
		    if(i<n-1)
		    {
    
    
		    	for(j=0;j<n;j++)
		        {
    
    
		    	    if(b[i]<b[j])
			        {
    
    
				        m=0;
			        }	
			    }
			}
		    if(i==n-1)
		    {
    
    
		    	for(j=i-1;j>=0;j--)
		    	{
    
    
		    		if(b[i]<b[j])
		    		{
    
    
		    			m=0;
					}
				}
			}
	 		if(m==1)
			{
    
    
				c[i]=a[i];
			}	
		}	
	}
	for(i=0;i<n;i++)
	{
    
    
		if(c[i]!=0)
		{
    
    
			k=1;
			if(i<n-1)
			{
    
    
				for(j=0;j<n;j++)
			    {
    
    
			    	if(c[j]!=0)
			    	{
    
    
			    		if(c[i]>c[j])
				        {
    
    
					        k=0;
				        }
					}
				    
			    }
			}
			if(i==n-1)
			{
    
    
				for(j=i-1;j>=0;j--)
				{
    
    
					if(c[j]!=0)
					{
    
    
						if(c[i]>c[j])
					    {
    
    
						    k=0;
					    }
					}	
				}
			}
		    if(k==1)
			{
    
    
				cout<<c[i];
			}	
		}
	}
}

おすすめ

転載: blog.csdn.net/Triver_/article/details/115037424