`

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

 
阅读更多

/**
二维数组 对角线输出 两个方向
例如对于数组:
{ 1, 2, 3, 4 }, 
{ 5, 6, 7, 8 },
{ 9, 10, 11, 12 }, 
{ 13, 14, 15, 16 },

slash方向输出:
1 
5 2 
9 6 3 
13 10 7 4 
14 11 8 
15 12 
16 

backslash输出:
4 
3 8 
2 7 12 
1 6 11 16 
5 10 15 
9 14 
13 

数组的行数和列数可以不相等,但同一行的元素个数必须相等,称为"矩阵"更合适
 */
public class PrintArray {

    public static void main(String[] args) {
        /*// row != col:
        int[][] arr = new int[][] { 
                { 1, 2, 3, 4 }, 
                { 5, 6, 7, 8 },
                { 9, 10, 11, 12 }, 
                //{ 13, 14, 15, 16 }, 
        };
        */
        int[][] arr = new int[][] { 
                { 1, 2, 3, 4 }, 
                { 5, 6, 7, 8 },
                { 9, 10, 11, 12 }, 
                { 13, 14, 15, 16 }, 
        };

        slash(arr);
        System.out.println("======");
        backslash(arr);
        
        
    }
    
    public static void slash(int[][] arr) {
        if (arr == null) {
            throw new IllegalArgumentException("arr cannot be null");
        }
        int col = arr[0].length;
        int row = arr.length;
        for( int k = 0 ; k < col * 2 -1 ; k++ ) {     //k代表有多少行输出,由col决定
            int sum = k;                              //同一行的元素,行下标和列下标的和相等
            for( int j = 0 ; j < col ; j++ ) {                 
                int i = sum - j;
                if(isValidIndex(i, row) && isValidIndex(j, col)) {
                    System.out.print( arr[i][j] + " " );
                }
            }
            System.out.println();
        }
    }
    
    public static void backslash(int[][] arr) {
        if (arr == null) {
            throw new IllegalArgumentException("arr cannot be null");
        }
        int row = arr.length;
        int col = arr[0].length;
        for (int k = 0; k < col * 2 - 1; k++) {     //k代表有多少行输出,由col决定
            int diff = col - k - 1;                 //同一行的元素,行下标和列下标的差相等
            for (int j = 0; j < col; j++) {
                int i = j - diff;
                if (isValidIndex(i, row) && isValidIndex(j, col)) {
                    System.out.print(arr[i][j] + " ");
                }
            }
            System.out.println();
        }
    }

    private static boolean isValidIndex(int i, int n) {
        return i >= 0 && i < n;
    }

}
2
0
分享到:
评论

相关推荐

    Java 求一个3*3矩阵对角线元素之和.rar

    Java 求一个3*3矩阵对角线元素之和,实现的思路主要是利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。也就计算对角线之和。计算对角线之和代码分享:  for(int i = 0;i ;i )  {   for(int j = 0;j ;j ...

    C语言数组二

    1、由键盘对4×4的二维数组初始化,计算其两条对角线元素之和并输出。   2、通过二维数组实现杨辉三角的前10行并输出。杨辉三角形式请参考教材P153。  3、将M×N的矩阵转置成N×M的矩阵并输出。  

    Java程序设计基础:二维数组基本操作.pptx

    掌握求二维数组正对角线元 素和的操作; 55 了解求二维数组最大值的元 素及下标的操作; 6 了解求二维数组所有和或所 有列的和的操作。 复习:二维数组元素引用 数据类型 数组名[行标][列标] //行标与列标都不能越界...

    Matlab三维数组操作大全(运行需更改文件名称)

    该资源给出了Matlab中关于三维数组的相关操作,包括:访问三维数组中的元素,取三维数组中每个二维矩阵的对角线元素,三维数组转置,对三维数组中每层的二维矩阵进行求和,对三维数组中每层的二维矩阵进行平均值计算...

    python实现二维数组的对角线遍历

    本文实例为大家分享了python实现二维数组的对角线遍历,供大家参考,具体内容如下 第一种情况:从左上角出发,右下角结束 要完成的事情,就像下图: 话不多说,直接上Python实现代码与结果展示: # 输出遍历的索引...

    Python二维数组实现求出3*3矩阵对角线元素的和示例

    题目:求一个3*3矩阵对角线元素之和。 程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。 def two_dimensionalArray(self): '二维数组实现求三阶矩阵的对角线元素之和' sum = 0 matrix = [...

    4*4矩阵对角线之和

    设计一个程序,求一个4*4矩阵的对角线之和(注意包括主对角线和副对角线)?

    matrix二维数组变换.zip

    使用JS实现二维数组的各种翻转和旋转(水平翻转,垂直翻转,对角线翻转,旋转等)等变换,提供所有源码及实例演示页面。

    1_二维数组赋值和指针操作_对角矩阵_club4xh_

    二维数组赋值和指针操作,二维数组本质上是以数组作为数组元素的数组,即“数组的数组”,类型说明符 数组名[常量表达式][常量表达式]。...对称矩阵a[i][j] = a[j][i],对角矩阵:n阶方阵主对角线外都是零元素。

    C语言程序设计-求5行5列矩阵的主、副对角线上元素之和;注意,两条对角线相交的元素只加一次;例如:主函数中给出的矩阵的两

    C语言程序设计-求5行5列矩阵的主、副对角线上元素之和;注意,两条对角线相交的元素只加一次;例如:主函数中给出的矩阵的两条对角线的和为45;

    Python中创建二维数组

    对称矩阵a[i][j] = a[j][i],对角矩阵:n阶方阵主对角线外都是零元素。 Python中创建二维数组 Python中的列表list可以当做一维数组使用,但是没有直接的定义使用二维数组。如果直接使用a = [][]会产生SyntaxError: ...

    将一个矩阵的上对角线加1,下对角线减1(C语言原代码)

    资源共享,有什么错误和好的建议请指出 如果没资源分,我可以直接发给你)

    leetcode二维数组-leetcode:我的LeetCode记录

    leetcode二维数组力码 我的 LeetCode 记录 561.阵列分区I(2018.3.15 ...如果从左上角到右下角的每个对角线都具有相同的元素,则矩阵是 Toeplitz。 现在给定一个 M x N 矩阵,当且仅当矩阵是 Toeplitz 时才返回

    线性规划简单对角线<高斯消元法>

    线性规划简单对角线&lt;二维数组处理&gt; 采用二维数组进行对角线验证 数学上,高斯消元法(或译:高斯消去法),是线性代数中的一个算法,可用来为线性方程组求解,求出矩阵的秩,以及求出可逆方阵的逆矩阵。当用于一个...

    python 实现矩阵按对角线打印

    将一个矩阵(二维数组)按对角线向右进行打印。(搜了一下发现好像是美团某次面试要求半小时手撕的题) Example: Input: [ [1,2,3,4], [5,1,2,3], [9,5,1,2] ] Output: [[4], [3, 3], [2, 2, 2], [1, 1, 1], [5, 5],...

    1.8编程基础之多维数组(25题)

    2018/06/09 周六 20:15 623 02同行列对角线的格子.cpp 2018/06/09 周六 20:31 295 03计算矩阵边缘元素之和.cpp 2018/06/09 周六 21:21 667 04错误探测.cpp 2018/06/09 周六 21:24 870 05计算鞍点.cpp 2018/06/09 ...

    C语言程序设计-在键盘上输入一个3行3列矩阵的各个元素的值(值为整数),然后输出主对角线元素的平方和

    C语言程序设计-在键盘上输入一个3行3列矩阵的各个元素的值(值为整数),然后输出主对角线元素的平方和,并在fun()函数中输出;.c

    矩阵的阶数

    从键盘上输入矩阵的阶数n(n),然后按以下规律形成二维数组Anxn:A中第一行元素为1,2,……n;第二行元素为n+1,n2,……2n;第三+行元素为2n+1,2n+2,……3n;…… 然后计算:(1)A中所有不靠边元素之和sum1;(2)A...

    混合中值滤波:HMF 对二维数组或 RGB 图像进行混合中值滤波-matlab开发

    在 NxN 框中计算三个中值:MR 是水平和垂直 R 像素的中值,MD 是对角线 D 像素的中值。 过滤后的值是两个中值和中心像素C的中值:median([MR,MD,C])。 B = HMF(A) 使用 N = 5(默认值)。 A 可以是二维数组或 RGB...

Global site tag (gtag.js) - Google Analytics