import java.util.Scanner;
public class yangHuiTriangle{
public static void main(String[] args) {
System.out.println("请输入要打印几行杨辉三角形(最多20行)。");
Scanner in = new Scanner(System.in);
int row = in.nextInt();
in.close();
if(row>20)//限定输入行数在范围之内。
row=20;
int[] arry = new int[20];
int[] temp = new int[9];
arry[0]=1;
arry[1]=1;
int k =0;
for(int i =0;i<row;i++){//i表示输出第几行,j表示打出多少空格,k表示输出的实际内容,b临时数组相关赋值于arry的操作
for(int j =0;j<row-i-1;j++){//先打印空格
System.out.print(" ");
}
for( k =0;k<i+1;k++){
if(k==0 || k== i){
System.out.print(1+" ");
}else{
System.out.print(arry[k]+arry[k-1]+ " ");
}
}
System.out.println();
for(int b =0;b<i-1;b++){
temp[b]=arry[b+1]+arry[b];
}
for(int b =0;b<i-1;b++){
arry[b+1]=temp[b];
}
arry[i]=1;
}
}
}
想法:我的想法是用一个数组arry存储每一行的数据(打印下一行之前会刷新数据),然后打印的时候先简单的让两个相邻的数据相加,到了最外层循环快结束的时候,统一相加到临时存放数据的数据temp,再由temp赋值给arry实现每一行刷新。
输入10,效果如下
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1