打印二维数组对角线从底部到顶部
我有一个二维数组在我的Java PRGM打印二维数组对角线从底部到顶部
[ 1 2 3
4 5 6
7 8 9 ]
如何斜向顺时针direction..such作为
[ 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++;
}
}
}
输出I小号
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;
}
}
}
代码tanq soo much :-) – lpd 2015-02-10 15:19:05
在你的行中=(row - 1 + R)%R;零件+ R)%R什么都不做,因为它是完全一样的数字;) – omgBob 2015-02-10 15:31:27
这是正确的,因为在这一点上行不会等于零。这只是我通常添加的保护措施,以避免负面指数。 – restricteur 2015-02-10 15:46:13
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--] + " ");
}
}
你只需要调试代码,我相信没有人会调试在这个论坛 – sashas 2015-02-10 14:38:10