7-1 杨辉三角
分数 10
入门
作者 时贵英
单位 东北石油大学
求杨辉三角的前n行数据。
输入格式:
输入n(n<10)值。
输出格式:
输出杨辉三角的前n行数据,每个数据占4列。
输入样例:
5
输出样例:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
解题思路:
杨辉三角,是二项式系数在三角形中的一种几何排列,在中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。
它具有很多性质,其中,最为独特的性质是其中的每一个元素都能通过排列组合得到,即:
第n行的m个数可表示为 ,即为从n-1个不同元素中取m-1个元素的组合数。
因此,我们可以通过此公式,得到n阶杨辉三角的每个元素。
组合中的=,这需要我们自己写一个阶乘方法,再在循环中套用此公式即可得到杨辉三角。
题目对杨辉三角的具有严格的格式要求,即每行首个元素需空三个空格,元素间隔三个空格,每行末尾元素后无空格。
代码实现:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
Fun f = new Fun();
for(int i=0;i<n;i++){
for(int j=0;j<=i;j++){
if(j==0&&i==0) System.out.print(" 1");
if(j==0&&i!=0) System.out.print(" 1 ");
if(j>0&&j!=i) System.out.print(f.fun(i)/(f.fun(j)*f.fun(i-j))+" "); //排列组合Cn公式
if(j==i&&j!=0) System.out.print(f.fun(i)/(f.fun(j)*f.fun(i-j))); //排列组合Cn公式
}
if(i!=n-1) System.out.println("");
}
}
}
class Fun{ //返回阶乘
int fun(int n){
int sum=1;
for(int i=n;i>0;i--){
sum*=i;
}
return sum;
}
}