输入一个N、M,表示有个N*N的二维数组,接下来有M行,每行输入3个整数I,J,W,表示二维数组A[I,J]中的数值是W在这个二维数组中,有A[I,J]=A[J,I]。分别输出二维数组中每一行、每一列、从左上到右下对角线、从右上到左下和整个数组的数值和。输入:3 51 1 31 2 72 2 52 3 23 3 4输出:10    {第一行的和}14    {第二行的和}6     {第三行的和}10    {第一列的和}14    {第一列的和}6     {第一列的和}12    {从左上到右下对角线的和}5     {第从右上到左下的和}30    {整个数组的和}
想了很多办法 貌似都不行

解决方案 »

  1.   

    package test;import java.util.Scanner;public class AnmTest { /**
     * @param args
     */
    public static void main(String[] args) {
    int n=0;
    int m=0;
    Scanner scanner = new Scanner(System.in);
    n = scanner.nextInt();
    m = scanner.nextInt();
    System.out.println(n+"\t"+m);
    int A[][] = new int[n][n];
    for (int j=0;j<n;j++) {
    for (int k=0;k<n;k++) {
    A[j][k] = 0;
    }
    }
    for (int i=0;i<m;i++) {
    int I = scanner.nextInt();
    int J = scanner.nextInt();
    int W = scanner.nextInt();
    System.out.println(I+"\t"+J+"\t"+W);
    A[I][J] = A[J][I] = W;
    }
    int suma = 0;
    int sumb = 0;
    int sumc = 0;
    int sumd = 0;
    int sum = 0;
    for (int j=0;j<n;j++) {
    for (int k=0;k<n;k++) {
    suma += A[j][k];
    sumb += A[k][j];
    sum += A[j][k];
    }
    sumc += A[j][j];
    sumd += A[j][n-j-1];
    System.out.println(suma+"\t{第"+(j+1)+"行的和}");
    System.out.println(sumb+"\t{第"+(j+1)+"列的和}");
    suma = 0;
    sumb = 0;
    }
    System.out.println(sumc+"\t{从左上到右下对角线的和}");
    System.out.println(sumd+"\t{第从右上到左下的和}");
    System.out.println(sum+"\t{整个数组的和}");
    }}应该输入(数组从0开始的):3 50 0 30 1 71 1 51 2 22 2 4输出:10 {第1行的和}14 {第2行的和}6 {第3行的和}10 {第1列的和}14 {第2列的和}6 {第3列的和}12 {从左上到右下对角线的和}5 {第从右上到左下的和}30 {整个数组的和}