- /*
- 打印出如下图像:
- 1 1 1 1 1
- 1 2 2 2 1
- 1 2 3 2 1
- 1 2 2 2 1
- 1 1 1 1 1
- 思路:
- 判断图像得出如下结果。
- 如果是3的话 则一行要输出5个数字(或者一列输出5个数字)
- 其中以中间为分割线 两边的数是对等的
- 在不考虑对等的情况下得出如下图案 1,1,1
- 1,2,2
- 1,2,3
- 结论:
- 第一行 全部是1 即行数
- 第二行 两边是1 中间是行数
- 第三行 列数小于行数即列数 否则行数
- 由此可以知道 行数决定当前行的最大值 不管列数是多少。
- 当列数小于行数的时候,应输出列数。
- 当列数大于行数的时候,应输出行数。
- 则可以设置两个变量 行x 列y 来实现当前图形
- if(y<x)
- System.out.println(y);
- else
- System.out.println(x);
- 列的对等处理方法及思路:
- 因为图形存在对等关系 需要对对等进行处理
- 方式如下:
- 判断当前列数是否超过最大值
- 因为是对等关系可以 由 最大值-(列数-最大值)可以得出对等位置的数字
-
- 行的对等处理方法及思路:
- 思路与列的对等基本一致
- */
- class Demo
- {
- public static void main(String[] args)
- {
- int num = 3;
- //上半段
- for(int x=1; x<=num; x++)
- {
- printnum(num,x);
- }
- //下半段
- for(int x=num-1; x>0; x--)
- {
- printnum(num,x);
- }
- }
-
- //因上半段与下半段判断方法一样 故创建一个函数 来简化代码
- public static void printnum(int num,int x)
- {
- for(int y=1;y<=2*num-1;y++)
- {
- //判断当前列数是否超过最大值
- if(y < num)
- {
- if(y<x)
- System.out.print(y+" ");
- else
- System.out.print(x+" ");
- }
- else
- {
- if(num-(y-num)<x)
- System.out.print(num-(y-num)+" ");
- else
- System.out.print(x+" ");
- }
- }
- System.out.println();
- }
- }
复制代码 这是我的想法和思路... |