ccf出現回数が最も多い数java構想

1708 ワード

試験問題番号:
201312-1
試験問題名:
出現回数が最も多い数
時間制限:
1.0s
メモリの制限:
256.0MB
問題の説明:
問題の説明
n個の正の整数を与え,それらの中で最も出現回数の多い数を探し出す.このような数が複数ある場合は、その中の最小の1つを出力します.
入力フォーマット
入力された最初の行には正の整数n(1≦n≦1000)が1つしかなく、数字の個数を表す.
入力された2行目にはn個の整数sがある
1, s
2, …, s
n (1 ≤ s
i ≤ 10000, 1 ≤ i ≤ n).隣接する数はスペースで区切られています.
出力フォーマット
このn個の回数の中で出現回数が最も多い数を出力する.このような数が複数ある場合は、その中の最小の1つを出力します.
サンプル入力
6
10 1 10 20 30 20
サンプル出力
10
考え方:状況を分けて討論する.
一つは同じ数が存在することであり、一つはすべての数が異なることである.
第1に、forサイクルで後のデータを前のデータと比較し、同じであればnumを1つ加算し、同時に後の数を0に割り当てる.
第2の場合、異なる場合はcountを1加算し、データがすべて異なる場合はcountの値はn(n+1)/2.となる.
package Demo;
import java.util.*;
public class ccf2013_1_1{

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int[] a=new int[n];
		for(int n1=0;n10)//        
				{
					num++;
					x[t]=0;
					if(num>maxnum)
					{
						maxnum=num;
						maxValue=x[i];
						
					}
					else if(num==maxnum)
					{
						if(x[i]

でもなぜか、総得点は90点しかありません.
もう一度やったんだccfテストに問題があるんだ
次は満点です
import java.util.Scanner;

public class ccf2013_12_1_0 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int[] num=new int[n];
		for(int i=0;imaxcount)
						{
							maxcount=count;
							value=num[i];
						}
						else if(count==maxcount)
						{
							if(num[i]

しかし、上記のプログラムの中の大サイクルの中のループをtの初期値をi+1に割り当て、countの初期値を1に割り当てると、このプログラムは90点しかありません......
しかし、これは上のプログラムと意味が一致しているのでしょうが、点数が違うので、酔っ払ってしまいました・・・