[编程题] 回形打印出一个矩阵

[编程题] 回形打印出一个矩阵

题目信息

给定一个m*n的矩阵,再给一个起始值value,要求拿这个起始值进行连续的打印出一个回型的矩阵。

思路

定义上下左右边界,循环存储

注意

防止四个角的重复打印

Java代码

package demo08;

import java.math.BigInteger;
import java.util.Arrays;
import java.util.logging.Level;

/**
 * @author jiyongjia
 * @create 2020/7/24 - 13:17
 * @descp:
 */
public class DemoNo1_回行打印数组 {
    public static void main(String[] args) {
        //调用
        int[][] arr = printArray(4, 4, 10);
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                System.out.print(arr[i][j]+"\t");
            }
            System.out.println();
        }


    }

    public static int[][] printArray(int rows,int cols,int startValue){
        //定义存储数组
        int[][] res = new int[rows][cols];
        //定义上下左右限
        int left = 0;
        int right = cols-1;
        int up = 0;
        int down = rows-1;

        while (true){
            //右
            for(int i=left;i<=right;i++){
                res[up][i] = startValue++;
            }
            if(++up > down)   { break;}
            //下
            for(int i=up;i<=down;i++){
                res[i][right] = startValue++;
            }
            if(--right<left) {break;}
            //左
            for(int i=right;i>=left;i--){
                res[down][i] = startValue++;
            }
            if(--down<up) {break;}
            //上
            for(int i=down;i>=up;i--){
                res[i][left] = startValue++;
            }
            if(++left>right) {break;}
        }
        return res;
    }

}

输出:

给定的起始值是10:输出如下:

image-20200802234348674

给定起始值0,输出如下

image-20200802234416853

posted @ 2020-08-02 23:45  北鼻coder  阅读(627)  评论(0编辑  收藏  举报