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

xiaoxiao2021-02-28  93

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 Erweisuzuixueduixian { /*  * 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

转载请注明原文地址: https://www.6miu.com/read-44164.html

最新回复(0)