蛇形填数(二人)变形之三角形

来源:互联网 发布:施温格 知乎 编辑:程序博客网 时间:2024/06/08 07:47
描述
1  2  3  4  512 13 14 611 15 710 89
跟蛇形填数一样,只是填数要求按照三角形填。注意每组数据之间用空行隔开
输入
第一行有一个N,表示N组测试数据
接下来每组数据包括一个数字X,表示三角形的边长,0< X <1000
输出

输出之后填好之后的图

package MainTest;import java.util.*;public class Main {    public static void main(String[] args) {    Scanner in= new Scanner(System.in);    int k=in.nextInt();    while(k-->0){    int n=in.nextInt();    int[][] a=new int[n][n];    for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) a[i][j]=0;}    int count=1;    int x=0,y=0;    a[x][y]=1;    //蛇形填数的变形,蛇形是控制四个方向,这个是三个方向,思路还是一样,控制数组下标变化即可    while(count<((n*(n+1))/2)){    while(y<n-1&&a[x][y+1]==0) {a[x][++y]=++count;}    while(x<n-1&&y>0&&a[x+1][y-1]==0){a[++x][--y]=++count;}        while(x>0&&a[x-1][y]==0) {a[--x][y]=++count;}    }//注意此处的打印方法,去掉不必要的列,只打印需要的列,思想借鉴!!!!           for(int i=0;i<n;i++) {              for(int j=0;j<n-i-1;j++){              System.out.print(a[i][j]+" ");            }              System.out.print(a[i][n-i-1]);            System.out.println();        }     }   }    }  
回顾:打印形状这类题,实质就是观察图形行和列的变化规律,结合数组下标变化即可,一定主要变化方向和数组越界问题,同时打印结果也要学会控制