JAVA打印出如下
0
0 1
0 2 1
0 3 3 1
0 4 6 4 1
0 5 10 10 5 1
0 6 15 20 15 6 1
0 7 21 35 35 21 7 1
0 8 28 56 70 56 28 8 1
0 9 36 84 126 126 84 36 9 1
0 10 45 120 210 252 210 120 45 10 1
分析:
高度为11,宽度递增从1-11。
我们可以利用二维数组来打印,
首先初始化数组
final int NMAX = 10;
Int [][] odds = new int [NMAX + 1][];
数组为[null, null, null, null, null, null, null, null, null, null, null]
数组为[null, null, null, null, null, null, null, null, null, null, null]
for (int i = 0; i <= NMAX; i++){
odds[i] = new int[i + 1];
}
初始化二维数组[[0], [0, 0], [0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
odds[i] = new int[i + 1];
}
初始化二维数组[[0], [0, 0], [0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
接下来就是替换数组内的值,
首先来观察规律,
根据规律:
for (int n = 0; n < odds.length; n++){
for (int k = 0; k < odds[n].length; k++) {
int lotteryOdds = 1;
for (int i = 1; i<= k; i++) {
lotteryOdds = lotteryOdds * (n +1 - i) / i;
odds[n][k] = lotteryOdds;
}
}
}
for (int k = 0; k < odds[n].length; k++) {
int lotteryOdds = 1;
for (int i = 1; i<= k; i++) {
lotteryOdds = lotteryOdds * (n +1 - i) / i;
odds[n][k] = lotteryOdds;
}
}
}
完整程序如下
public class text89 {
public static void main(String[] args) {
final int NMAX = 10;
final int NMAX = 10;
int [][] odds = new int [NMAX + 1][];
for (int i = 0; i <= NMAX; i++){
odds[i] = new int[i + 1];
}
for (int n = 0; n < odds.length; n++){
for (int k = 0; k < odds[n].length; k++) {
int lotteryOdds = 1;
for (int i = 1; i<= k; i++) {
lotteryOdds = lotteryOdds * (n +1 - i) / i;
odds[n][k] = lotteryOdds;
}
}
}
for (int[] ks : odds) {
for (int ww : ks){
System.out.printf("%4d",ww);
}
System.out.println();
}
}
for (int i = 0; i <= NMAX; i++){
odds[i] = new int[i + 1];
}
for (int n = 0; n < odds.length; n++){
for (int k = 0; k < odds[n].length; k++) {
int lotteryOdds = 1;
for (int i = 1; i<= k; i++) {
lotteryOdds = lotteryOdds * (n +1 - i) / i;
odds[n][k] = lotteryOdds;
}
}
}
for (int[] ks : odds) {
for (int ww : ks){
System.out.printf("%4d",ww);
}
System.out.println();
}
}
}