A1048. 数字三角形

问题描述

  输入一个边长,打印出旋转序列的三角图形。
输入格式
  边长n,其中1<=n<=10
输出格式
  数字三角形,一共n行,第i(1<=i<=n)行有i个数,每行相邻的两个数用一个空格符隔开
样例输入
4

样例输出

1
2 9
3 10 8
4 5 6 7

 

package www.tsinsen.com;

import java.util.Scanner;

public class A1048 {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner scan=new Scanner(System.in);
        int n=scan.nextInt();
        int[][] arr=new int[n][n];
        int[][] flag=new int[n][n];
        for(int i=0;i<n;i++){
            for(int j=0;j<=i;j++){
                flag[i][j]=1;
            }
        }
        int count=1;
        arr[0][0]=1;
        flag[0][0]=0;
        int i=0,j=0;
        while(count<((1+n)*n)/2){
            while(i+1<n&&flag[i+1][j]==1){
                arr[++i][j]=++count;
                flag[i][j]=0;
            }
            while(j+1<n&&flag[i][j+1]==1){
                arr[i][++j]=++count;
                flag[i][j]=0;
            }
            while(j-1>=0&&i-1>=0&&flag[i-1][j-1]==1){
                arr[--i][--j]=++count;
                flag[i][j]=0;
            }
        }
        for(int ii=0;ii<n;ii++){
            for(int jj=0;jj<=ii;jj++){
                if(jj==ii){
                    System.out.print(arr[ii][jj]);
                }
                else{
                    System.out.print(arr[ii][jj]+" ");
                }
            }
            System.out.println();
        }
    }

}

 

posted @ 2018-02-28 13:55  henu小白  阅读(266)  评论(0)    收藏  举报