TimeLimit提交后超过

时间:2018-06-19 13:16:46

标签: java arrays bufferedreader time-limiting

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

class Main {

    public static void main(String[] args) throws NumberFormatException, IOException {
        BufferedReader input = new BufferedReader(new InputStreamReader(System.in));        
        int t = Integer.parseInt(input.readLine());

        for (int i = 0; i < t; i++) {
            String[] arrayData = input.readLine().split(" ");
            int[] cardsi = new int[arrayData.length];
            int e = 0;

            for(int a = 0; a < arrayData.length; a++){
                cardsi[e] = Integer.parseInt(arrayData[a]);
                e++;
            }

            int X = cardsi[0];
            int N = cardsi[1];
            long count = 0;

            for (int j = 2; j < cardsi.length; j++) {
                for (int l = 3; l <= (cardsi.length - 1); l++) {
                    if ((cardsi[j] + cardsi[l]) == X &&(j != l)) {
                        count++;
                    }
                }
            }
            System.out.println((i + 1) + ". " + count);
        }

    }
}

提交时,出现LCPC12F问题时出现了超出时间限制错误。什么是解决方案?扫描仪是出现此类错误的主要麻烦吗?

1 个答案:

答案 0 :(得分:0)

您曾经在IDE上运行过这些代码吗?

当我将数字提供给t元素时,然后是arrayData(在这种情况下,由于int,我们应该输入String类型而不是java.lang.NumberFormatException ),它表明Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1int N = cardsi[1];是我认为您代码中的主要问题。这是因为String[] arrayData = input.readLine().split(" ");的大小为1,所以cardsi[1]数组上没有int元素