代码打卡 杨辉三角

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个数可表示为 C_{n-1}^{m-1}\textrm{},即为从n-1个不同元素中取m-1个元素的组合数。

因此,我们可以通过此公式,得到n阶杨辉三角的每个元素。

组合中的C_{n}^{m}\textrm{}=\frac{n!}{m!(n-m)!},这需要我们自己写一个阶乘方法,再在循环中套用此公式即可得到杨辉三角。

题目对杨辉三角的具有严格的格式要求,即每行首个元素需空三个空格,元素间隔三个空格,每行末尾元素后无空格。

代码实现:

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;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值