Google CodeJam 2020 Vestigium中的运行时错误

时间:2020-04-04 20:24:37

标签: java arrays matrix

停车位在拉丁语中表示“跟踪”。

方阵的轨迹是主对角线(从左上角到右下角)上的值之和。

如果每个单元格包含N个不同值之一,并且在行或列内不重复任何值,则N×N方阵是拉丁方阵。在此问题中,我们将仅处理“自然拉丁方”,其中N值为1到N之间的整数。

给定一个仅包含1到N之间的整数的矩阵,我们要计算其轨迹并检查它是否为自然的拉丁方。为了提供更多的信息,请简单地计算包含重复值的行数和列数,而不是简单地告诉我们矩阵是否是自然的拉丁方。

import java.io.*;
import java.util.*;
class Solution
{
    public static void main(String args[])
    {
        Scanner sc=new Scanner(new BufferedReader(new InputStreamReader(System.in)));
        int T,N,matrix[][],dupCheck[];
        int i,j,k,r,c,Sum;
        String inMat[];
        dupCheck=new int[100];
        T=Integer.parseInt(sc.nextLine());
        for(k=1;k<=T;k++,matrix=null)
        {
            N=Integer.parseInt(sc.nextLine());
            matrix=new int[N][N];
            for(i=0,r=0;i<N;i++)
            {
                inMat=(sc.nextLine()).split(" ");
                Arrays.fill(dupCheck,0);
                for(j=0;j<N;j++)
                {
                    matrix[i][j]=Integer.parseInt(inMat[j]);
                    dupCheck[matrix[i][j]]++;
                }
                for(j=0;j<100;j++)
                {
                    if(dupCheck[j]>1)
                    {
                        r++;
                        break;
                    }
                }
            }

            for(i=0,Sum=0;i<N;i++) Sum+=matrix[i][i];

            for(i=0,c=0;i<N;i++)
            {
                Arrays.fill(dupCheck,0);
                for(j=0;j<N;j++)
                {
                    dupCheck[matrix[j][i]]++;
                }
                for(j=0;j<100;j++)
                {
                    if(dupCheck[j]>1)
                    {
                        c++;
                        break;
                    }
                }
            }

            System.out.println("Case #"+k+": "+Sum+" "+r+" "+c);
        }
    }
}

它在IDE中运行良好,并且给出了正确答案。 但是提交时出现运行时错误。

2 个答案:

答案 0 :(得分:0)

出现运行时错误是因为您的代码在第一种情况下有效,然后给出了答案。然后,当我们输入另一个案例时,它也会给出答案。但是Google会立即输入所有案件,然后您需要以单行形式给出所有案件的答案。

答案 1 :(得分:-1)

尝试添加sc.close();在关闭主方法之前。