您的位置:首页 > 其它

二维数组(矩阵)对角线输出

2017-05-06 01:30 176 查看
1,二维数组(N*N),沿对角线方向,从右上角打印到左下角如N=4: 
4*4二维数组 

Java代码  


{ 1 2 3 4 }  

{ 5 6 7 8 }  

{ 9 10 11 12 }  

{13 14 15 16 }  

打印顺序 

Java代码  


4  

3 8  

2 7 12  

1 6 11 16  

5 10 15  

9 14  

13  

要求半个小时内写出可完整运行的代码。 

这个是美团的一个小题,半个小时做出来。水平不加,花了一个小时,可能也不能和大牛比,只是自己记载吧。

代码如下:public class Erweisuzuixueduixia
4000
n {

/*

 * 1,二维数组(N*N),沿对角线方向,从右上角打印到左下角如N=4: 

 * 4*4二维数组 

 *  { 1 2 3 4 }  04 03 02 01 10 20 30 40
{ 5 6 7 8 }  
{ 9 10 11 12 }  
{13 14 15 16 }  
4  
3 8  
2 7 12  
1 6 11 16  
5 10 15  
9 14  
13  */
public static void main(String[] args) {
printErweisuzuByN(5);
}

private static void printErweisuzuByN(int num) {
int[][] arrs=new int [num][num];
arrscreateArrays(arrs,num);
//加载数据
ToShowPrintArrs(arrs);
}

private static void ToShowPrintArrs(int[][] arrs) {
//当前的数据  0 4 15 
//n+n-1
int length=arrs.length;
//-12
//03 02 01 00 10 20 30 
//   13 12 11
//      23 22

        //         33
for(int z=length-1;0-length-1<z;z--){//笔记本问题,大于号打不出来,代码质量请见谅 这是贴近现实的代码实现
//算xy坐标
 int y=z;
 int x=0;
 if(z<0){
 y=0;//X轴坐标
 x=0-z;
 }
for(int t=0;t<=length-x-y-1;t++){//根据X轴y轴 和 length关系 不用些过滤
System.out.print(arrs[x+t][y+t]+" ");//
}  
System.out.println();
}

}

private static void arrscreateArrays(int[][] arrs,int num) {
int tranNum=1;
for(int z=1;z<=num;z++){
int tranVal=tranNum+arrs.length-1;
int[] tranNums=new int[num];
for(int t=tranNum;t<=tranVal;t++){
tranNums[t-tranNum]=t;
if(t==tranVal){
tranNum=t+1;
}
}
arrs[z-1]=tranNums;
}
}

}

以上就是这道题,我的答案!下面是一位大牛写的,膜拜下!
http://bylijinnan.iteye.com/blog/2056301
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  二维数组 对角线
相关文章推荐