簡體   English   中英

從左上到右下對角閱讀martix的所有元素

[英]read all elements of martix diagonally from upper left to lower right

我有一個Java代碼,它從右上到左下讀取對角線值,但是我想讓代碼從左上到右下讀取值。

int [][]mat = { {1,2,3},
                {4,5,6},
                {7,8,9},
};

int N=3;

for (int s=0; s<N; s++) {
    for (int i=s; i>-1; i--) {
        System.out.print(mat[i][s-i] + " ");
    }
    System.out.println();
}

for (int s=1; s<N; s++) {
    for (int i=N-1; i>=s; i--) {
        System.out.print(mat[i][s+N-1-i] + " ");
    }
    System.out.println();
}

以上代碼的輸出是

1 4 2 7 5 3 8 6 9

我想要序列像

3 2 6 1 5 9 4 8 7
int [][]mat = { {1,2,3},
                {4,5,6},
                {7,8,9},
};

int N=3;

for (int s=N-1; s>-N; --s) {
    int iMin = s>0 ? s : 0;
    int iMax = s>0 ? N : N+s;
    for (int i=iMin; i<iMax; ++i) {
        System.out.print(mat[i-s][i] + " ");
    }
}
System.out.println();

產量

3 2 6 1 5 9 4 8 7 

我已修改您的代碼以實現所需的輸出。

for (int s = N - 1; s > -1; s--) {
    for (int i = s; i < N; i++) {
        System.out.print(mat[i - s][i] + " ");
    }
    System.out.println();
    }

for (int s = 1; s < N; s++) {
   for (int i = s; i < N; i++) {
        System.out.print(mat[i][i - s] + " ");
    }
    System.out.println();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM