蓝桥杯 试题 基础练习 杨辉三角形

编程入门 行业动态 更新时间:2024-10-24 20:24:22

蓝桥杯 试题 基础练习 杨辉三<a href=https://www.elefans.com/category/jswz/34/1769024.html style=角形"/>

蓝桥杯 试题 基础练习 杨辉三角形

试题 基础练习 杨辉三角形

题目描述

杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。
它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。  
下面给出了杨辉三角形的前4行:

     1 
   1   1  
 1   2  1
1  3  3  1

给出n,输出它的前n行。

测试用例分析

输入格式:

输入包含一个数n。

输出格式:

输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。请不要在前面输出多余的空格。

样例输入:

4

样例输出:

1
1 1
1 2 1
1 3 3 1

解题思路

认识杨辉三角形

前提:

每行端点与结尾的数为1。

基础练习    二维数组的应用

注意

  注意每一行的间隔以及它上一行的相邻的两个数之间的和,也就是上一行的递推运算。它的第i行j列就是它上一行的i-1行,j-1列的值和它上一行的i-1行,j列上的值之和。

代码如下

直角的杨辉三角

import java.util.Scanner;
public class YangHuiTriangle {public static void main(String[] args) {Scanner input = new Scanner(System.in);int n = input.nextInt();//键盘随机输入一个十进制整数int[][] array = new int[n][n];//构建一个二维数组for(int i = 0; i < array.length; i++){//控制杨辉三角形的行数for(int j = 0; j <= i; j++){//控制杨辉三角形的列数if(j == 0 || j == i){//将杨辉三角形的第i行0列以及第i行j列(这里的直角杨辉三角形是关于第i行j列对称)array[i][j] = 1;}else{//计算第i行第j列的数,也就是该数的上方相邻的两个数之和array[i][j] = array[i-1][j-1] + array[i-1][j];}//输入三角形的每一行System.out.print(array[i][j] + " ");}System.out.println();//换行}}
}

等腰的杨辉三角形

import java.util.Scanner;/*** 杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。* 它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。* 下面给出了杨辉三角形的前4行:* *    1*   1 1*  1 2 1* 1 3 3 1* * 给出n,输出它的前n行。* @author Lenovo**/
public class YangHuiTriangle {public static void main(String[] args) {Scanner input = new Scanner(System.in);int n = input.nextInt();//键盘随机输入一个十进制整数int[][] array = new int[n][n];//构建一个二维数组for(int i = 0; i < array.length; i++){//控制杨辉三角形的行数for(int j = 0; j <= i; j++){//控制杨辉三角形的列数if(j == 0 || j == i){array[i][j] = 1;//将杨辉三角形的第i行0列以及第i行j列(这里的直角杨辉三角形是关于第i行j列对称)}else{array[i][j] = array[i-1][j-1] + array[i-1][j];}//System.out.print(array[i][j] + " ");}//System.out.println();}//等腰输出处理for(int i = 0; i < array.length; i++){int m = array.length - i;//打印对应的空格,也就是等腰三角形腰前面对应的空格for(int j = 0; j <= m; j++){//打印相邻的空格System.out.print(" ");}for(int k = 0; k <= i; k++){//上述进行等腰处理后,输出杨辉三角形System.out.print(array[i][k] + " ");//输出想对应的二维数组值}System.out.println();//输完后换行处理}}
}

  这种解法,不能用于解决蓝桥杯上的杨辉三角形,系统上默认的是直角型的杨辉三角形,顾此种解法只适合大家课后学习,探讨的新知识,新的解法,顾此方法供大家开启思维的大门,希望读者能够想到,也希望我的解法能够帮到你学习到一题多解的思想。

本题的核心思想

  第一:了解并且熟悉杨辉三角形的数学原理,杨辉三角,是二项式系数在三角形中的一种几何排列,它把二项式系数图形化,把组合数内在的一些代数性质直观地从图形中体现出来,是一种离散型的数与形的结合。

  第二:第n行的m个数可表示为 C(n-1,m-1),即为从n-1个不同元素中取m-1个元素的组合数。

  第三: 每个数字等于上一行的左右两个数字之和。可用此性质写出整个杨辉三角。即第n+1行的第i个数等于第n行的第i-1个数和第i个数之和,这也是组合数的性质之一。即 C(n+1,i)=C(n,i)+C(n,i-1)。

  第四:斜线上数字的和等于其向左(从左上方到右下方的斜线)或向右拐弯(从右上方到左下方的斜线),拐角上的数字。1+1=2,1+1+1=3,1+1+1+1=4,1+2=3,1+2+3=6,1+2+3+4=10,1+3=4,1+3+6=10,1+4=5。

  第五:解决的算法是,上一行递推计算,也有其他运用和组合的对应关系而使用阶乘计算的,然而这种CPU处理的速度较慢且阶乘容易溢出,所以我们采用上一行的递推运算。

  第六:使用二维数组,for循环嵌套使用,以及空格的输出,等腰三角形是如何实现的。

学习的建议

熟悉使用java的一些基本的编程思想

于IT行业而言,计算机编程语言只是一个工具,我们主要学习的是数学,再由数学到数据结构与算法分析,这样才能很好的学习到新的知识。

更多推荐

蓝桥杯 试题 基础练习 杨辉三角形

本文发布于:2024-03-15 07:32:33,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1738397.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:角形   试题   基础   蓝桥杯   杨辉

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!