概述
1,二维数组(N*N),沿对角线方向,从右上角打印到左下角如N=4:
4*4二维数组
- { 1 2 3 4 }
- { 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 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
最后
以上就是笑点低便当为你收集整理的二维数组(矩阵)对角线输出的全部内容,希望文章能够帮你解决二维数组(矩阵)对角线输出所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复