请以任何一种语言实现以下输入与输出。
输入为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(); } }}