Java编码 蛇形矩阵的构建与遍历输出

一、蛇形矩阵的构建,并按行输出

例:

输入:n,

生成n*n的蛇形矩阵

1 2 3

8 9 4

7 6 5

输出:1 2 3 8 9 4 7 6 5

java编码

public static void main(String[] args) {
        // TODO Auto-generated method stub

        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        if(n < 0)
            return;
        if(n == 1){
            System.out.println(1);
            return;
        }

        int[][] m = new int[n][n];
        //定义4个变量,分别记录当前行和列的上下限
        int i1 = 0, j1 = 0, i2 = n - 1, j2 = n - 1;
        int i = 0, j = 0;
        int begin = 1;
        //4个for循环,遍历蛇形矩阵
        while(i1 <= i2 && j1 <= j2){

            for(; j <= j2; ++j){//one row
                m[i][j] = begin;
                begin++;
            }
            j--;
            i++;
            i1++;

            for(; i <= i2; ++i){//one column
                m[i][j] = begin;
                begin++;
            }
            j2--;
            j--;
            i--;

            for(; j >= j1; --j){//one row
                m[i][j] = begin;
                begin++;
            }
            i2--;
            j++;
            i--;

            for(; i >= i1; --i){//one column
                m[i][j] = begin;
                begin++;
            }
            j1++;
            j++;
            i++;
        }

        //按行输出 蛇形矩阵
        for(i = 0; i < n; ++i)
            for(j = 0; j < n; ++j)
                System.out.println(m[i][j] + " ");
    }

二、已知蛇形矩阵m,顺时针顺序输出

例:

矩阵m

1   2   3   4

12 13 14  5

11 16 15  6

10 9   8   7

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

public static void main(String[] args) {
        // TODO Auto-generated method stub

        int[][] m = {{1,2,3,4},{12,13,14,5},{11,16,15,6},{10,9,8,7}};
        int n = m.length;
        int c = m[0].length;
        if(n == 1){
            for(int a = 0; a < m[0].length; ++a)
                System.out.print(m[0][a] + " ");
        }
        if(c == 1){
            for(int a = 0; a < m.length; ++a)
                System.out.print(m[a][0] + " ");
        }

        //定义4个指针,记录行和列的上下限
        int i1 = 0, j1 = 0, i2 = n - 1,j2 = c - 1;
        int i = 0, j = 0;
        while(i1 <= i2 && j1 <= j2){//one row
            for(; j <= j2; ++j)
                System.out.print(m[i][j] + " ");
            i++;
            j--;
            i1++;
            for(; i <= i2; ++i)//one column
                System.out.print(m[i][j] + " ");
            i--;
            j--;
            j2--;
            for(; j >= j1; --j)//one row
                System.out.print(m[i][j] + " ");
            i--;
            j++;
            i2--;
            for(; i >= i1; --i)//one column
                System.out.print(m[i][j] + " ");
            i++;
            j++;
            j1++;
        }

    }
时间: 2024-08-26 06:58:32

Java编码 蛇形矩阵的构建与遍历输出的相关文章

Java实现蛇形矩阵

public class Solution { //下x++ 左y-- 上x-- 右y++ public void prints(int n) { int[][] mp = new int[n][n]; for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { mp[i][j] = 0; } } int x , y, tot; tot = mp[x=0][y=n-1] = 1; while(tot < n*n) { while(x+1<n

华为OJ——蛇形矩阵

题目描述 题目说明 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形. 样例输入 5 样例输出 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11 接口说明 原型 void GetResult(int Num, char * pResult); 输入参数: int Num:输入的正整数N 输出参数: int * pResult:指向存放蛇形矩阵的字符串指针 指针指向的内存区域保证有效 返回值: void 输入描述: 输入正整数N(N不大于100) 输出描述: 输出一个N

js实现蛇形矩阵-腾讯前端笔试题

参加腾讯前端实习生笔试,真的是被虐了千百遍,除了一条js程序题,其他半点前端都没有,都是考算法,计算机原理,数据结构.下面贴上腾讯笔试最后三大条中的一条,实现一个蛇形矩阵的输出.蛇形矩阵的什么样这里我就不多说了. var lineCount=0; var numCount=1; var lineLog=1; var doubleArray=[]; var result="result:"; var lineCountGet; function index (n) { ArrayMake

java蛇形矩阵实现方法

四.蛇形矩阵描述:  蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形. 输入 正整数N(N不大于100) 输出 输出一个N行的蛇形矩阵. 样例输入:5 样例输出: 1 3 6 10 15 2 5 9 14 16 4 8 13 17 22 7 12 18 21 23 11 19 20 24 25 接口说明 /**  *  * 输入一个不大于100的数字,产生蛇形矩阵字符串  *  * 例如输入5时,产生如下蛇形矩阵输出字符串,每个数字之间用空格分开  * 1 3 6 10 15  * 2

ACM_蛇形矩阵

蛇行矩阵 Time Limit: 4000/2000ms (Java/Others) Problem Description: 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形. Input: 本题有多组数据,每组数据由一个正整数N组成.(N不大于100) Output: 对于每一组数据,输出一个N行的蛇形矩阵.两组输出之间不要额外的空行.矩阵三角中同一行的数字用一个空格分开.行尾不要多余的空格. Sample Input: 5 Sample Output: 1 3 6 10 15 2 5

蛇形矩阵与螺旋矩阵

自己写的蛇形矩阵:(蛇形矩阵就是在NXN矩阵格子上从左上到右下以"之"字型增加或减少,像蛇盘绕着的形状.本程序从左上开始盘旋一直到右下达到最大值) #include <iostream> using namespace std; #define n 10//输入要更改的矩阵大小 void main() { int a[n][n]={0},k=1,j=0,i=0,s1[4]={0,1,2,3},t1[4]={1,1,2,2},m=0; for (int t=1;t<=n

个人整理--Java编码规范

编码规范对于开发人员来说是非常重要的,有以下几个原因: 1.一个软件的生命周期中,80%的花费在于维护 2.几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护 3.编码规范可以改善软件的可读性,可以让程序员尽快而彻底地理解新的代码 4.如果你将源码作为产品发布,就需要确任它是否被很好的打包并且清晰无误,一如你已构建的其它任何产品 5.为来自不同的项目组或个人提供标准的代码格式. 6.增加易读性. 在不用Java两年多后因工作需要我又要转入Java开发,为此我整理出下面的编码规范,

【Java编码准则】の #02不要在客户端存储未加密的敏感信息

当构建CS模式的应用程序时,在客户端侧存储敏感信息(例如用户私要信息)可能导致非授权的信息泄漏. 对于Web应用程序来说,最常见的泄漏问题是在客户端使用cookies存放服务器端获取的敏感信息.Cookies是由web服务器创建的,它具有一个指定的有效时间,保存在客户端.当客户端连接上服务器端时,客户端使用cookies中存储的信息向服务器端进行认证,通过后服务器端返回敏感信息. 在XSS攻击下,Cookies不能保证敏感信息的安全.无论是通过XSS攻击,还是直接对客户端的攻击,攻击者一旦获取到

oracle Java编码规范

最近看java编码规范,借鉴petercao的原文翻译并做了改动,还有没有改完的地方,欢迎指正. 原文地址如下 http://www.cnblogs.com/bluestorm/archive/2012/10/04/2711540.html Oracle官方Java编码规范(英文版) http://www.oracle.com/technetwork/java/codeconvtoc-136057.html 1 介绍(Introduction) 1.1 为什么要有编码规范(Why Have Co