算法
public class Test { public static void main(String[] args) { if(args.length != 3){ return; } int start = Integer.parseInt(args[0]); int end = Integer.parseInt(args[1]); int limit = Integer.parseInt(args[2]); //二维数组 int[][] rows = new int[limit][]; for (int i = 0; i < rows.length; i++) { rows[i] = new int[limit-i]; } //赋值,行列互换 for (int x = 0; x < rows.length; x++) { for (int y = 0; y < rows[x].length; y++) { rows[y][x] = start; start ++; //reset if(start > end){ start = 1; } } } //输出 for (int x = 0; x < rows.length; x++) { for (int y = 0; y < rows[x].length; y++) { if(y != 0){ System.out.print(" "); } System.out.print(rows[x][y]); } //new line System.out.println(); } } }
public class Test2 { public static void main(String[] args) { if(args.length != 3){ return; } int start = Integer.parseInt(args[0]); int end = Integer.parseInt(args[1]); int limit = Integer.parseInt(args[2]); //初始化 [1,2,3,4,5] int[] array = new int[end]; for (int i = 0; i < end; i++) { array[i] = i+1; } int index = start - 1; for (int row = 0; row < limit; row++) { for (int step = limit; step > row; step--) { if(step != limit){ System.out.print(" "); } //读取array中index位置的值 System.out.print(array[index]); //调整步长,循环读取 index = (index + step) % end; } //每行重新调整索引 index ++; if(index >= array.length){ index = 0; } //换行 System.out.println(); } } }