巴斯卡三角形

巴斯卡(Pascal)三角形基本上就是在解 nCr ,因为三角形上的每一个数字各对应一个n Cr,其中 n 为 row,而 r 为 column,如下:
    0 C0
   1 C0 1 C1
  2 C0 2 C1 2 C2
 3 C0 3 C1 3 C2 3 C3
4 C0 4 C1 4 C2 4 C3 4 C4

对应的数据如下图所示:
巴斯卡三角

 解法


巴斯卡三角形中的 nCr 可以使用以下这个公式来计算,以避免阶乘运算时的数值溢位:
n Cr = [(n-r+1)/r] * n Cr-1
n C0 = 1 
 
 
 
import java.awt.*; 
import javax.swing.*;

public class Pascal extends JFrame {
public Pascal() {
setBackground(Color.white);
setTitle("巴斯卡三角形");
setSize(520, 350);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
show();
}

private long combi(int n, int r){
int i;
long p = 1;

for(i = 1; i <= r; i++)
p = p * (n-i+1) / i;

return p;
}

public void paint(Graphics g) {
final int N = 12;
int n, r, t;

for(n = 0; n <= N; n++) {
for(r = 0; r <= n; r++)
g.drawString(" " + combi(n, r),
(N-n)*20 + r * 40, n * 20 + 50);
}
}

public static void main(String args[]) {
Pascal frm = new Pascal();
}
}
 

你可能感兴趣的:(职场,休闲,巴斯卡三角形)