当前位置: 代码迷 >> J2SE >> JAVA 打印矩阵。输入为1,输出如下三维矩阵;输入为2时,输出五维矩阵;输入为3时,输出为七维矩阵
  详细解决方案

JAVA 打印矩阵。输入为1,输出如下三维矩阵;输入为2时,输出五维矩阵;输入为3时,输出为七维矩阵

热度:331   发布时间:2016-04-24 01:32:58.0
求助:JAVA 打印矩阵。输入为1,输出如下三维矩阵;输入为2时,输出五维矩阵;输入为3时,输出为七维矩阵。
请以任何一种语言实现以下输入与输出。

输入为1,输出三维矩阵为 
  1 1 1
  1 2 1
  1 1 1

输入为2时,输出五维矩阵为 
  1 1 1 1 1
  1 1 2 1 1
  1 2 3 2 1
  1 1 2 1 1
  1 1 1 1 1

输入为3时,输出为七维矩阵  
  1 1 1 1 1 1 1
  1 1 1 2 1 1 1
  1 1 2 3 2 1 1
  1 2 3 4 3 2 1
  1 1 2 3 2 1 1
  1 1 1 2 1 1 1
  1 1 1 1 1 1 1
…….
依此类推

要求:
1. 描述详细的设计思路
2. 可以使用任何一种语言(Java,C++等)
3. 画出流程图

------解决方案--------------------
Java code
public class Test1{    public static void main(String[] args){        printRect(3);    }        static void printRect(int n){        int size = n * 2 + 1;        int[][] arrays = new int[size][size];        //获取上半部分        for(int i = 0;i < size;i++){            for(int j = 0;j <= size / 2;j++){                if(i <= size / 2){                    if(i + j > n){                        //横纵下标之和大于n元素的值为“下标之和 - 数组长度的一半 + 1“                        arrays[i][j] = arrays[i][size - j - 1] = i + j - size / 2  + 1;//左右对称                    }                    else                        arrays[i][j] = arrays[i][size - j - 1] = 1;                }            }        }        //翻转获取下半部分,上下对称        for(int i = size / 2;i < size;i++){            for(int j = 0;j < size;j++){                arrays[i][j] = arrays[size - i - 1][j];            }        }                    //输出        for(int i = 0;i < size;i++){            for(int j = 0;j < size;j++){                System.out.print(arrays[i][j] + " ");            }            System.out.println();        }    }}
  相关解决方案