java杨辉三角

package com.algorithm;

/**
 * @Description 杨辉三角
 * @author FuJianyong
 * 2015-1-22上午10:10:59
 */
public class YangHui {
	public static void main(String[] args) {
		//初始化二维数组长度
		int[][] yanghui = new int[10][];

		/*
		 * 动态初始化二维数组
		 * 第一步	杨辉三角初始化		
			0	
			0	0	
			0	0	0	
			0	0	0	0	
			0	0	0	0	0	
			0	0	0	0	0	0	
			0	0	0	0	0	0	0	
			0	0	0	0	0	0	0	0	
			0	0	0	0	0	0	0	0	0
		 */
		for(int i=0;i<yanghui.length;i++) {
			   yanghui[i] = new int[i];  
		}		
		/*
		 * 第二步	杨辉三角第一位和最后以为数值都是1		
						 
			1	
			1	1	
			1	0	1	
			1	0	0	1	
			1	0	0	0	1	
			1	0	0	0	0	1	
			1	0	0	0	0	0	1	
			1	0	0	0	0	0	0	1	
			1	0	0	0	0	0	0	0	1
		 */
		for(int i=0;i<yanghui.length;i++) {
			for(int j=0;j<i;j++) {
				if(i==0 || j==0 || j==yanghui[i].length-1)
				yanghui[i][j] = 1;
			}
		}
		/*
		 * 第三步	杨辉三角第n行n列的数值等于n-1行n-1列(左上方)加上n-1行n列(正上方)的数值											
						
			1	
			1	1	
			1	2	1	
			1	3	3	1	
			1	4	6	4	1	
			1	5	10	10	5	1	
			1	6	15	20	15	6	1	
			1	7	21	35	35	21	7	1	
			1	8	28	56	70	56	28	8	1
		 */
		for(int i=0;i<yanghui.length;i++) {
			for(int j=0;j<i;j++) {
				//处理剩下没赋值的数组
				if(i!=0 && j!=0 && j!=yanghui[i].length-1) {
					yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j];
				}
			}
		}
		/*
		 * 输出杨辉三角	
		 * 第二步可以和第三步合并
		 */
		for(int i=0;i<yanghui.length;i++) {
			for(int j=0;j<i;j++) {
				System.out.print(yanghui[i][j] +"\t");  
			}
			System.out.println();
		}
	}
}

你可能感兴趣的