`
brandNewUser
  • 浏览: 456906 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

二维数组对角线打印

阅读更多

 

美团招聘CRM后端Java工程师的题目:

http://www.iteye.com/topic/1134016

 

其中的题目要求如下:

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

Java代码   收藏代码
  1. 1 2 3 4 }  
  2. 5 6 7 8 }  
  3. 9 10 11 12 }  
  4. {13 14 15 16 }  


打印顺序 

Java代码   收藏代码
  1. 4  
  2. 3 8  
  3. 2 7 12  
  4. 1 6 11 16  
  5. 5 10 15  
  6. 9 14  
  7. 13  


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

 

由于本人算法也不太好,找出其中的大概规律如下,以(i,j)作为坐标轴打印结果:

(0,3)
(0,2)(1,3)
(0,1)(1,2)(2,3)
(0,0)(1,1)(2,2)(3,3)
(1,0)(2,1)(3,2)
(2,0)(3,1)
(3,0)

 

于是大致分析出其中的规律,写出以下算法程序:

package com.clamaa.algorithm.simple.interview;

/**
 * @author clamaa
 * @date 14-6-6.
 */
public class MeituanTitle {

    private static final int[][] DATA = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}};

    public static void main(String[] args) {
        int n = DATA.length;
        int iStart = 0;
        int jStart = n - 1;

        while (iStart != n) {
            for (int i = iStart, j = jStart; i <= n - 1 && j <= n - 1; i++, j++) {
                System.out.print(DATA[i][j]);
                System.out.print(" ");
            }
            if (jStart > 0) {
                jStart--;
            } else {
                iStart++;
            }
            System.out.println();
        }

    }
}

 

第一层循环中,设置矩阵输出的起始坐标,起始坐标的基本规律是,列index如果不为0,下一行中列index--;列index为0,下一行中行index++。

第二层循环中,对于起始的坐标,在没有到达最后一列时,坐标的行列index均++。

 

运行后结果打印出来的结果符合预期,不知道是否超出了30分钟蠢话

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

 

 

分享到:
评论

相关推荐

    用二维数组实现杨辉三角

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

    C语言数组二

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

    二维数组遍历

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

    java实现二维数组转置

    用java实现二维数组的转置,1.输入想要创建的数组的维数M;2.分别输入M行数组元素;3.打印数组;4.数组转置;5.打印转置后的数组

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

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

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

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

    C++二维数组实现杨辉三角的前10行输出

    1. **初始化数组**:创建一个二维数组来存储杨辉三角的值。 2. **计算值**:根据杨辉三角的定义,利用嵌套循环来计算每个位置上的值。 3. **格式化输出**:使用适当的方式输出这些值,以便形成一个清晰易读的三角形...

    利用二维数组实现井字游戏

    根据给定的信息,本文将详细解释如何通过二维数组来实现井字游戏(Tic-Tac-Toe)。井字游戏是一种简单但有趣的两人策略游戏,在3x3的网格中进行,玩家轮流放置自己的标记(通常是一个X和一个O),目标是在任一行、列...

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

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

    实验七 二维数组

    ### 实验七 二维数组知识点解析 #### 一、二维数组的基本概念 在C语言中,二维数组可以被看作是一组一维数组的集合,它通常用来表示矩阵或者表格等具有行和列结构的数据。二维数组的声明方式是:`类型标识符 数组名...

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

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

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

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

    利用二维数组打印杨辉三角形.docx

    1. 如果 `b` 等于 0 或者 `a` 等于 `b`,即第一列或对角线上的元素,它们的值都为 1。 2. 对于其他位置的元素,其值等于其正上方元素 `d[a-1][b]` 加上左斜上方元素 `d[a-1][b-1]`。 填充完成后,我们再次使用两层...

    C#二维数组(答案).docx

    我们将分步骤地解读如何进行二维数组的初始化、元素的存取、遍历以及打印等操作。此外,我们还将涉及如何生成随机数填充数组,并提取对角线元素的方法。 首先,二维数组在C#中是通过声明一个具有两个维度的数组来...

    二维数组数据结果课程设计

    含word文档,运行结果,c++源代码。项目功能包括输入一个二维数组A,自定义数组A的行数和列数;读入数组下标,求出数组...当数组的行数和列数相等(m=n)时,分别求两条对角线上的数据元素之和,否则打印出m!=n的信息。

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

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

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

    在本项目中,我们主要探讨的是使用C++编程语言处理二维数组的相关操作,具体包括两个核心知识点:如何用随机数填充二维数组以及如何提取二维数组的主对角线和副对角线元素到一维数组中。下面我们将详细展开这两个...

    lesson10数据的组织结构一二维数组与排序.pptx

    对称矩阵的定义是其转置矩阵等于自身,即对角线上的元素与其对角线相对元素相等。检查一个给定的二维数组是否为对称矩阵,可以通过比较下三角部分的元素与其对应的上三角元素是否相等来实现。 总的来说,理解和掌握...

    C语言实现3*3数组对角线之和示例

    在本文中,我们将深入探讨如何使用C语言计算一个3x3二维数组的主对角线和副对角线元素之和。首先,我们要理解数组的基本概念。数组是C语言中的一种数据结构,它允许我们存储同一类型的数据集合。在本例中,我们使用...

    Java二维数组计算集合总结

    本文将深入探讨如何使用Java二维数组进行特定计算,如求解十字和、左对角线和以及右对角线和。 首先,我们来看如何计算二维数组的十字和。在给定的代码段中,`CrossSum` 类展示了如何实现这个功能。十字和指的是...

Global site tag (gtag.js) - Google Analytics