从下到上对角打印二维数组
print 2d array diagonally from bottom to top
我的 java 程序中有一个二维数组
[ 1 2 3
4 5 6
7 8 9 ]
这个矩阵如何顺时针对角排列..如
[ 9 8 6
7 5 3
4 2 1 ]
这应该适用于所有N阶方阵。
谁能帮帮我
class try2
{
public static void main (String[] args) throws java.lang.Exception
{
int[][] elements = new int[][]{
{1,5,9,13},
{2,6,10,14},
{3,7,11,15},
{4,8,12,16}
};
int i=0,j=0,k=0,l = 0;
int rows = 4,columns = 4;
// Elements to the left of secondary diagonal elements.
while(i<rows){
k = i;
j=0;
// System.out.print("1 loop");
//System.out.println(" "+k+""+j);
while(k>=0 && j>=0 && k<rows && j<columns){
System.out.print(elements[k][j]+" ");
j++;
k--;
}
i++;
System.out.println();
}
i = rows-1;
j = 1;
// elements to the right of secondary diagonal elements.
while(j<columns){
k = i;
l = j;
//System.out.print("2 loop");
//System.out.println(" "+k+""+l);
while(l<columns){
System.out.print(elements[k][l]+" ");
l++;
k--;
}
System.out.println();
j++;
}
}
}
输出是
1
2 5
3 6 9
4 7 10 13
8 11 14
12 15
16
期望的输出是
16
12 15
8 11 14
4 7 10 13
3 6 9
2 5
1
给你:
class Diag
{
public static void main(String[] args) throws java.lang.Exception
{
int[][] elements = new int[][] {
{ 1, 5, 9, 13 },
{ 2, 6, 10, 14 },
{ 3, 7, 11, 15 },
{ 4, 8, 12, 16 } };
int R = elements.length;
int C = elements[0].length;
for (int row = R - 1, col = C - 1; row >= 0 && col >= 0;)
{
if (col == C - 1 && row != 0)
{
System.out.println(elements[row][col]);
col = row - 1;
row = R - 1;
continue;
}
if (row == 0)
{
System.out.println(elements[row][col]);
row = col - 1;
col = 0;
continue;
}
System.out.print(elements[row][col] + " ");
row = (row - 1 + R) % R;
col = (col + 1) % C;
}
}
}
class Solution {
public static void main(String[] args) {
int a[][] = {{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}};
int i=0,j=0;
while(i<a[0].length){
printDiagonal(0,i++,a,a[0].length,a.length);
if(i!=a[0].length-1)
System.out.println();
}
i = 0;
int len = a[0].length-1;
while(i<a.length){
printDiagonal(i++,len,a,a.length,a[0].length);
System.out.println();
}
}
public static void printDiagonal(int x, int y, int[][] A, int l1, int l2) {
while(x >= 0 && y >= 0 && x < l1 && y < l2)
System.out.print(A[x++][y--] + " ");
}
}
我的 java 程序中有一个二维数组
[ 1 2 3
4 5 6
7 8 9 ]
这个矩阵如何顺时针对角排列..如
[ 9 8 6
7 5 3
4 2 1 ]
这应该适用于所有N阶方阵。 谁能帮帮我
class try2
{
public static void main (String[] args) throws java.lang.Exception
{
int[][] elements = new int[][]{
{1,5,9,13},
{2,6,10,14},
{3,7,11,15},
{4,8,12,16}
};
int i=0,j=0,k=0,l = 0;
int rows = 4,columns = 4;
// Elements to the left of secondary diagonal elements.
while(i<rows){
k = i;
j=0;
// System.out.print("1 loop");
//System.out.println(" "+k+""+j);
while(k>=0 && j>=0 && k<rows && j<columns){
System.out.print(elements[k][j]+" ");
j++;
k--;
}
i++;
System.out.println();
}
i = rows-1;
j = 1;
// elements to the right of secondary diagonal elements.
while(j<columns){
k = i;
l = j;
//System.out.print("2 loop");
//System.out.println(" "+k+""+l);
while(l<columns){
System.out.print(elements[k][l]+" ");
l++;
k--;
}
System.out.println();
j++;
}
}
}
输出是
1
2 5
3 6 9
4 7 10 13
8 11 14
12 15
16
期望的输出是
16
12 15
8 11 14
4 7 10 13
3 6 9
2 5
1
给你:
class Diag
{
public static void main(String[] args) throws java.lang.Exception
{
int[][] elements = new int[][] {
{ 1, 5, 9, 13 },
{ 2, 6, 10, 14 },
{ 3, 7, 11, 15 },
{ 4, 8, 12, 16 } };
int R = elements.length;
int C = elements[0].length;
for (int row = R - 1, col = C - 1; row >= 0 && col >= 0;)
{
if (col == C - 1 && row != 0)
{
System.out.println(elements[row][col]);
col = row - 1;
row = R - 1;
continue;
}
if (row == 0)
{
System.out.println(elements[row][col]);
row = col - 1;
col = 0;
continue;
}
System.out.print(elements[row][col] + " ");
row = (row - 1 + R) % R;
col = (col + 1) % C;
}
}
}
class Solution {
public static void main(String[] args) {
int a[][] = {{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}};
int i=0,j=0;
while(i<a[0].length){
printDiagonal(0,i++,a,a[0].length,a.length);
if(i!=a[0].length-1)
System.out.println();
}
i = 0;
int len = a[0].length-1;
while(i<a.length){
printDiagonal(i++,len,a,a.length,a[0].length);
System.out.println();
}
}
public static void printDiagonal(int x, int y, int[][] A, int l1, int l2) {
while(x >= 0 && y >= 0 && x < l1 && y < l2)
System.out.print(A[x++][y--] + " ");
}
}