数据结构之杨辉三角实现

(1)形如  

                        1

                   1       1

               1       2       1

            1     3       3      1

          1    4      6      4     1     

称为杨辉三角  

详细的概念参考:

http://baike.baidu.com/link?url=UO76y1CzNbuy2qZggVZwuoI6MNinSV_YFCpLmJ55aIl83ufTK5CGoOyBV9kg23h_maf13KLrf7rLmGjkD8lmmDn0tKP4-PIPosuzk3YMOqsCsn90GQKtDjwbD4umz95S


(2)实现(涉及的概念:任何一个数字等于它肩膀上的两个数字之和

import java.util.Scanner;

/**
 * @date 2017-5-29
 * @author liuffei
 * @description 杨辉三角实现
 */
public class YangHuiTriangle {
	
	public static int[][] yangHuiTriangle(int n){
		//建立杨辉三角二维矩阵
		int triangle[][] = new int[n][];
		if(n >= 1){
			/**
			 * 1
			 */
			triangle[0] = new int[]{1};
		}
		if(n >= 2){
			/**
			 *  1
			 * 1 1
			 */
			triangle[0] = new int[]{1};
			triangle[1] = new int[]{1,1};
		}
		if(n >= 3){
			/**
			 *     1
			 *    1 1
			 *   1 2 1
			 *  1 3 3 1
			 * 1 4 6 4 1
			 */
			for(int i = 2;i < n;i++){
				int row[] = new int[i+1];
				row[0] = 1;//杨辉三角每行的第一个数都是1
				for(int j = 1;j < i;j++){
					//中间数的值等于它肩膀上两个数的和
					row[j] = triangle[i-1][j-1] + triangle[i-1][j];
				}
				row[i] = 1;//杨辉三角每行的最后一个数也是1
				triangle[i] = row;
			}
		}
		return triangle;
	}

	public static void main(String[] args) {
	   System.out.println("请输入杨辉三角整数n=");
	   //命令行输入值
	   Scanner sc = new Scanner(System.in);
	   int input = sc.nextInt();
           int triangle[][] = yangHuiTriangle(input);
           //打印
           for(int i = 0;i < triangle.length;i++){
    	       for(int j = 0;j < triangle[i].length;j++){
    		   System.out.print(triangle[i][j] + " ");
    	       }
    	      System.out.println("");
          }
      }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值