需要得到矩阵中每隔一列的总和

时间:2017-04-15 22:21:25

标签: arrays for-loop matrix

需要帮助获取其他所有列的总和。我需要帮助的方法是SumofC方法(或最后一种方法)。因此,如果我输入3x3列,它将如下所示:

1 2 3 
4 5 6
7 8 9
     

每隔一列的总和= 30   因此1 + 4 + 7 = 12(第1列),3 + 6 + 9 = 18(第3列)添加第1列和第3列以获得30.我已经拥有每列的总和,我需要的是得到每一列的总和。因此,每个奇数列并将它们全部加在一起得到一个整数。

  public static void main(String [] args)
    {
        Scanner S = new Scanner(System.in);
        System.out.println("Enter a number:");
        int n = S.nextInt();

        int [][] matrix = new int [n][n];

        int k = 1;
        for(int i = 0; i < n; i++)
        {
            for(int j = 0; j < n; j++)
            {
                matrix[i][j] = k;
                k++;
            }
        }
        PrintMatrix(matrix);
        sumofC(matrix);
    }
    public static void PrintMatrix(int [][] matrix)
    {
        for(int r = 0; r < matrix.length; r++)
        {
            for(int c = 0; c < matrix[r].length; c++)
            {
                System.out.print(matrix[r][c] + " ");
            }
            System.out.println();
        }
    }
    //Sum of every Column starting at the 1st.
    public static void sumofC(int [][] num)
    {
        for(int i = 0; i < num.length; i++)
        {
            int sum = 0;
            for(int j = 0; j < num[i].length; j++)
            {
                sum += num[j][i];

            }
            System.out.println(sum);
        }
    }

2 个答案:

答案 0 :(得分:0)

sumofC方法中,您可以编写i++来跳过每个备用列,而不是在for语句中执行i+=2

但是,如果矩阵中的数字始终包含代码中的数字,则可以O(1)时间复杂度计算答案。作为提示,您可以使用公式来计算算术级数

中的数字总和

答案 1 :(得分:0)

你需要对每个奇数列进行总和。一般是1日,3日,5日等。在编程语言中,你少开始一个,所以它是0,2,4等。在sumofC方法的第一个循环中,每次增加i。你只需要改变它就可以增加两倍而且你已经完成了。也就是i+=2,你已经完成了。 要添加所有列的总和,只需使用其他变量{1}},然后在打印sumOfAllCols变量之前执行sumOfAllCols += sum;