Ошибка выполнения в Google CodeJam 2020 Vestigium - PullRequest
0 голосов
/ 04 апреля 2020

Vestigium означает «след» на латыни.

След квадратной матрицы - это сумма значений на главной диагонали (которая идет от верхнего левого угла до нижнего правого ).

Квадратная матрица 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, а также дает правильный ответ. Но при отправке я получаю сообщение об ошибке выполнения.

1 Ответ

0 голосов
/ 05 апреля 2020

Попробуйте добавить s c .close (); до закрытия основного метода.

...