`

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

 
阅读更多

/**
二维数组 对角线输出 两个方向
例如对于数组:
{ 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
分享到:
评论

相关推荐

    C# 二维数组 矩阵

    C#中 二维数组,阵列,基本语法。 10-1. 陣列種類: 2 10-2. 陣列的宣告方式 2 10-3. 指定初值的陣列宣告方式 3 10-4. 陣列索引指標的上下界值 3 10-5. 比較VB.NET與C#.NET的陣列 4 10-6. 範例練習[exp10-1]:二維陣...

    C语言数组二

    通过本文,我们将详细探讨C语言中二维数组的三种典型应用:初始化二维数组并计算对角线元素之和、生成杨辉三角以及实现矩阵转置。这些操作不仅能够加深对C语言数组的理解,还能训练解决问题的能力,对于提升编程技巧...

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

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

    用二维数组实现杨辉三角

    1. **初始化**:将二维数组的第一列和主对角线元素设置为1,因为这些位置的值在任何情况下都是1。 2. **计算中间元素**:从第二行开始,使用嵌套循环计算每一行的内部元素。每一个元素的值等于其上方左侧和正上方两...

    c++二维数组ppt资源

    2.给定一个n*n的矩阵,求该矩阵中对角线上元素的和。 sum = 0; for (i = 0; i ; i++) sum += a[i][i]; cout ; 3.将一个n*m的矩阵行和列元素互换并输出。 for (i = 0; i ; i++) for (j = 0; j ; j++) cout [j]...

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

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

    二维数组遍历

    第二种遍历方式是按照逆向对角线方向遍历二维数组,并且每遍历完一条对角线后,同时打印该对角线与其对称位置的另一条对角线上的元素。 ```c for (int i = 0; i ; i++) { int k = MAX - i - 1; for (int j = 0; j...

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

    本篇文章将深入探讨如何使用Python二维数组来求解3x3矩阵对角线元素的和。矩阵是对数学运算非常重要的工具,尤其是在线性代数中,它能表示线性变换、系统方程组等。 首先,我们要理解什么是二维数组和矩阵。二维...

    c++实现求数组两对角线元素之和

    在C++编程中,"数组对角线元素之和"是一个常见的问题,特别是在处理二维数组时。本项目针对这个问题提供了一种解决方案,适用于VC6.0和VC2005两个版本的Microsoft Visual C++编译器。在这个场景中,我们要计算一个二...

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

    ### Python 实现二维数组的对角线遍历 在计算机科学中,二维数组是一种常见的数据结构,被广泛应用于各种算法和编程任务中。对于二维数组的遍历,除了常见的按行或按列遍历外,有时还需要进行特殊形式的遍历,比如...

    4*4矩阵对角线之和

    在4×4的矩阵中,主对角线上的元素是第1行第1列、第2行第2列、第3行第3列以及第4行第4列的元素。 #### 副对角线 副对角线是指从右上角到左下角的对角线。对于4×4的矩阵而言,副对角线上的元素为第1行第4列、第2行...

    基于C++编写一个函数求一个4*4二维数组所有周边元素的和

    在C++编程中,二维数组是一种非常常见的数据结构,它被广泛用于表示表格或矩阵。在本题中,我们被要求编写一个函数,该函数计算一个4x4二维数组的所有周边元素的和。周边元素指的是矩阵边缘上的元素,不包括对角线上...

    用二维数组实现魔方矩阵(含代码)

    【魔方矩阵】是一种特殊的矩阵,要求每行、每列以及两条主要对角线上的数字之和都相等。这种矩阵通常用于智力游戏和数学问题中。本篇文档将介绍如何使用二维数组来实现魔方矩阵,特别是针对奇数阶的魔方矩阵。 **...

    cpp代码-(二维数组)(1)随机数,赋值给二维数组(2)把主对角线副对角线的元素赋值给一维数组

    在本项目中,我们主要探讨的是使用C++编程语言处理二维数组的相关知识,特别是如何向二维数组填充随机数以及如何提取二维数组的主对角线和副对角线元素到一维数组中。以下是关于这些主题的详细说明: 首先,二维...

    实验七 二维数组

    1. **求一个3×3矩阵对角线元素之和**: 需要用到双重循环来遍历整个矩阵,然后根据对角线的特性(即行索引和列索引相等)来累加元素。 2. **打印杨辉三角形**: 使用双重循环,外层循环控制行数,内层循环控制...

    matrix二维数组变换.zip

    - 对角线翻转:也称为镜像翻转,它沿着主对角线(从左上到右下)进行翻转,使得原数组的每个元素与其对角线上的元素互换位置。 - 旋转:通常分为90度、180度和270度的旋转。对于90度旋转,数组的每一行变为新数组...

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

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

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

    在`main`函数内部,声明了一个二维整型数组`a[M][N]`来存储矩阵的元素。 然后,使用嵌套循环读取用户输入的矩阵元素。`for(i=0;i;i++)`循环遍历每一行,`for(j=0;j;j++)`循环遍历每一列。`scanf("%d",&a[i][j])`...

Global site tag (gtag.js) - Google Analytics