2 u013451048 u013451048 于 2014.12.12 21:47 提问

蓝桥杯 出现次数最多的 数字串统计 错误

直接上代码,出现次数最多的数,提交显示 运行错误

字串统计,提交直接显示错误。

public class Main

public static void main(String[] args)
{
    java.util.Scanner cin = new java.util.Scanner(System.in);
    int   n     = cin.nextInt();
    int[] array = new int[n];
    int[] count = new int[n];
    boolean flag = false;
    int   index = 0;
    int   num   = 0;
    for(int i = 0;i<n;i++)
    {
        flag = false;

        num = cin.nextInt();

        for(int j = 0;j<i;j++)
        {
            if(num == array[j])
            {
                flag = true;
                count[j]++;
                break;
            }
        }
        if(!flag)
        {
            array[index++] = num;
        }
    }

    int max = 0;
    for(int i = 1;i<index;i++)
    {
        if(count[i]>count[max])
            max = i;
    }
    System.out.print(array[max]);

}

}

字串统计的

public class Main
{
public static void main(String[] args)
{
java.util.Scanner cin = new java.util.Scanner(System.in);
int L = cin.nextInt();
String s = cin.next();
String temp = "";
int first = 0;
int last = first + L;
int length = s.length();

    java.util.Map<String,Integer>  map = new  java.util.TreeMap<String,Integer>();

    while(length>=L)
    {
        first = 0;
        last = length;
        while(last<=s.length())
        {
            temp = s.substring(first,last);
            if(map.containsKey(temp))
            {
                Integer tempCount = map.get(temp);
                tempCount++;
                map.put(temp,tempCount);
            }
            else
                map.put(temp,1);
            first++;
            last++;
        }
        length--;
    }

    java.util.Collection<Integer> setmap = map.values();
    java.util.Set<String> setstr = map.keySet();

    java.util.Iterator it = setmap.iterator();
    java.util.Iterator its = setstr.iterator();

    int max = (int)it.next();
    String str = its.next().toString();
    String tempstr = str;
    int tempMax = max;

    while(it.hasNext())
    {
        tempMax = (int)it.next();
        tempstr = its.next().toString();
        if(tempMax>max)
        {
            max = tempMax;
            str = tempstr;
        }

    }
    System.out.println(str);

}

}

纠结啊,本机运行都没错,提交就是不对,全是80分,不知道哪错

1个回答

devmiao
devmiao   Ds   Rxr 2014.12.13 00:34

简单看了下你的代码,没有使用合理的算法,都是用的穷举,在线程序会用比较复杂的测试用例,算法不合理运行会超过时间和内存限制而不通过。你还需要完善下你的程序。

u013451048
u013451048 谢谢
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!