• LeetCode——Pascal's Triangle


    Given numRows, generate the first numRows of Pascal's triangle.

    For example, given numRows = 5,
    Return

    [
         [1],
        [1,1],
       [1,2,1],
      [1,3,3,1],
     [1,4,6,4,1]
    ]
    原题链接:https://oj.leetcode.com/problems/pascals-triangle/

    题目 :给定n,生成n行的帕斯卡三角形。

    思路:帕斯卡三角形 也就是 杨辉三角形,依据数学知识,知当中每一行的数字代表的是 (a+b)^n 的系数。于是此题能够转化为求组合数 C(n,k)。把每一行的系数算出来就可以。

    	public static List<List<Integer>> generate(int numRows) {
    		List<List<Integer>> list = new ArrayList<List<Integer>>();
    		if (numRows < 1)
    			return list;
    		for (int i = 0; i < numRows; i++) {
    			List<Integer> li = new ArrayList<Integer>();
    			for (int j = 0; j <= i; j++) {
    				li.add(Integer.valueOf(cnk(i, j) + ""));
    			}
    			list.add(li);
    		}
    		return list;
    	}
    
    	//求组合数
    	public static BigInteger cnk(int n, int k) {
    		BigInteger fenzi = new BigInteger("1");
    		BigInteger fenmu = new BigInteger("1");
    		for (int i = n - k + 1; i <= n; i++) {
    			String s = Integer.toString(i);
    			BigInteger stobig = new BigInteger(s);
    			fenzi = fenzi.multiply(stobig);
    		}
    		for (int j = 1; j <= k; j++) {
    			String ss = Integer.toString(j);
    			BigInteger stobig2 = new BigInteger(ss);
    			fenmu = fenmu.multiply(stobig2);
    		}
    		BigInteger result = fenzi.divide(fenmu);
    		return result;
    	}



    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    Gridview使用CheckBox全选与单选 Version 2
    Repeater控件第前10笔记录高亮显示
    下拉式菜单(DropDownList)连动的选择
    DataList控件显示图片要的是效果
    电容屏、电阻屏基础知识
    SIM300实现GPRS上网
    qt练习7 定时爆炸小游戏
    用 STL vector 来创建二维数组
    sim300_at命令.doc
    QT练习6 label,button创建,点击按键关闭
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4665429.html
Copyright © 2020-2023  润新知