求杨辉三角的前n行数据。
输入格式:
输入n(n<10)值。
输出格式:
输出杨辉三角的前n行数据,每个数据占4列。
输入样例:
5
输出样例:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
思路:观察发现,第一列(j==0)和第x行x列(即i==j)时值均为1,从第三行第二列开始(即i>=2 && j>=1)该数=上一行的数+上一行前面的数(即a[i][j]=a[i-1]+a[j]+a[i-1]+a[j-1]
代码:
#include <stdio.h>
int main()
{
int n,i=0,j=0; //i行j列
int a[10][10]={0};
scanf("%d",&n);
for(i=0;i<n;i++){
for(j=0;j<n;j++){
if(j==0||i==j)
a[i][j]=1;
if(i>=2 && j>=1)
a[i][j]=a[i-1][j]+a[i-1][j-1];
}
}
for(i=0;i<n;i++){
for(j=0;j<=i;j++) //输出直角三角形j<=i
printf("%4d",a[i][j]);
printf("\n");
}
return 0;
}
简化后的代码:
#include <stdio.h>
int main()
{
int n, i, j;
int a[10][10];
scanf("%d",&n);
for (i=0;i<n;i++) {
for (j=0;j<=i;j++) {
if(j==0||i==j)
a[i][j]=1;
else
a[i][j]=a[i-1][j-1]+a[i-1][j];
printf("%4d", a[i][j]);
if (i==j)
printf("\n");
}
}
return 0;
}