使用二维数组打印一个 10 行杨辉三角 九章算法

使用二维数组打印一个 10 行杨辉三角 <<九章算法>> <<杨辉算法>>


介绍

  1. 每个数等于它上方两数之和。
  2. 每行数字左右对称,由1开始逐渐变大。
  3. 第n行的数字有n项。
  4. 前n行共[(1+n)n]/2 个数。
  5. 第n行的m个数可表示为 C(n-1,m-1),即为从n-1个不同元素中取m-1个元素的组合数。
  6. 第n行的第m个数和第n-m+1个数相等
    ,为组合数性质之一。
		1                    
		1 1
		1 2 1
		1 3 3  1
		1 4 6  4  1
		1 5 10 10 5 1*/
public static void main(String[] args) 
	{
		/*【面试】	使用二维数组打印一个 10 行杨辉三角   <<九章算法>> <<杨辉算法>>
		1                    
		1 1
		1 2 1
		1 3 3  1
		1 4 6  4  1
		1 5 10 10 5 1
		思路分析
			1. 一共有 5 行
			2. 每行有 个数,和行数相等  , 比如 1行 = 1数   2 行  = 2 数 3 行 = 3数
			3. 从第三行开始,对于 非第一个元素和最后一个元素,她的值 arr[i][j]
			arr[i][j] = arr[i-1][j] + arr[i-1][j-1]; //分析*/
		//定义二维数组,该二维数组的行可以确定,列是变化的,需要动态的赋值
		int yangHui[][] = new int[6][]; 
		for( int i = 0; i < yangHui.length; i++) {//i表行
			//每一行,动态分配
			yangHui[i] = new int[i+1];
			//遍历 yangHui[i]   分配值
			//规律我做了分析
			for( int j = 0; j < yangHui[i].length; j++) {
				
				//对于每行的第一个元素和最后一个元素,1
				if( j == 0 || j == yangHui[i].length - 1) {
					yangHui[i][j] = 1;
				} else {
					yangHui[i][j] = yangHui[i-1][j] + yangHui[i-1][j-1];
				}
			}

		}

		//看看效果

		for( int i = 0; i < yangHui.length; i++) {//i表行
			
			for( int j = 0; j < yangHui[i].length; j++) {
				
				System.out.print( yangHui[i][j] + "\t");
			}
			System.out.println();
		}	 
	}
发布了29 篇原创文章 · 获赞 21 · 访问量 5995

猜你喜欢

转载自blog.csdn.net/Lance_welcome/article/details/104439482
今日推荐