当前位置:首页 > 芯闻号 > 充电吧
[导读]问题描述:编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20。然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来。如果有两

问题描述:编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20。然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来。如果有两个元素值出现的次数相同,即并列第一,那么只打印比较小的那个值。
  输入格式:第一行是一个整数N,N £ 20;接下来有N行,每一行表示一个整数,并且按照从小到大的顺序排列。
  输出格式:输出只有一行,即出现次数最多的那个元素值。
  输入输出样例 样例输入 5
100
150
150
200
250 样例输出 150

import java.util.*;  
import java.math.*;
public class Main
{
	public static void main(String[] args)
	{
		Scanner sc=new Scanner(System.in);
		String k[]=new String[25];//考虑到输入的整数的数据溢出问题,用的是String 存所输入的内容
		int max_count=1;//先假定输入的次数最多的为1次,一个数至少出现了1次
		int count=1;//一个数最少出现一次
		int n=sc.nextInt();//读取数据的个数
		int t=0;
		for(int s=0;s<n;s++)
		{
			int i=0;
			k[t++]=sc.next();//将数据存入数组
			for(i=0;k[t-1].charAt(i)=='0';i++);// 预防 010和10数值相同的类似情况,对存储的进行修正
			k[t-1]=k[t-1].substring(i);
		}
		k[t]="null";//这一个是没有意义的因为存储到范围是0~n-1
		String max_time_num=k[0];//假定出现次数最多的字符串是0
		for(int d=0;dmax_count)//不想等就判断是否大于当前最大值
				{
					max_count=count;//大于就把出现的次数的最大值给max_count
					max_time_num=k[d];//用k[d]给max_time_num赋值
				}
				count=1;//无论是否满足情况count都要赋值为1
			}
		}
		if(n>0)//少了这个只能得到80分,
		System.out.println(max_time_num);//输出最终的结果	
	}
}


下面这些都是得到80分的,不知道是数据溢出了,还是没有对N<=0进行判断。我也不尝试了!

import java.util.*;  
import java.math.*;
public class Main
{
	public static void main(String[] args)
	{
		Scanner sc=new Scanner(System.in);
		int k[]=new int[22];
		int max_count=1;
		int max_time_num=0;
		int count=0;
		int n=sc.nextInt();
		int t=0;
		while(n-->0)
		{
			k[t++]=sc.nextInt();
		}
		if(t>1)
		{
			for(int s=t;s>=1;s--)
			{
				if(k[s]==k[s-1])
				{
					count++;
				}
				else
				{
					count=1;
				}
				if(count>=max_count)
				{
					max_count=count;
					max_time_num=k[s];
				}
			}
			if(k[0]!=k[1]&&k[1]!=k[2]&&max_time_num==k[1])
			{
				max_time_num=k[0];
			}
			System.out.println(max_time_num);
		}
		else
		{
			System.out.println(k[0]);
		}
	}
}



import java.util.*;  
import java.math.*;
public class Main
{
	public static void main(String[] args)
	{
		Scanner sc=new Scanner(System.in);
		int k[]=new int[22];
		int max_count=1;
		int max_time_num=0;
		int n=sc.nextInt();
		int t=0;
		while(n-->0)
		{
			k[t++]=sc.nextInt();
		}
		max_time_num=k[0];
		for(int i=0;i<t;)
		{
			int count=0;
			int d=0;
			for(d=0;(k[i]==k[i+d])&&(i+dmax_count)
			{
				max_count=count;
				max_time_num=k[i];
			}
			i=i+d;
		}
		System.out.println(max_time_num);
		
	}
}

import java.util.*;  
import java.math.*;
public class Main
{
	public static void main(String[] args)
	{
		int k[]=new int[10000000];
		int max_time,max_num=0;
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int k2[]=new int[n];
		for(int i=0;i<n;i++)
		{
			k2[i]=sc.nextInt();
			k[k2[i]]++;
		}
		max_num=k2[0];
		max_time=k[k2[0]];
		for(int i=0;i<n;i++)
		{
			if(max_time<k[k2[i]])
			{
				max_num=k2[i];
			}
		}
		System.out.println(max_num);
	}
}
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭