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

描述
1  2  3  4  5
12 13 14 6
11 15 7
10 8
9
跟蛇形填数一样,只是填数要求按照三角形填。注意每组数据之间用空行隔开
输入
第一行有一个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();
        } 

    	}
   }
    
}  
回顾:打印形状这类题,实质就是观察图形行和列的变化规律,结合数组下标变化即可,一定主要变化方向和数组越界问题,同时打印结果也要学会控制

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值