啊
杨辉三角
感觉这一题值得说说
杨辉三角是我进入ACM协会时上机做的一题
据当时学长学姐说是当时在所有题里最难的一题
(所以进协会其实还是挺简单的)
做了这一题其它题就不用做了……‘
不过这一种写法是在进协会之前想的一种公式法
也就是根据
第n行的m个数可表示为 C(n-1,m-1)
即为从n-1个不同元素中取m-1个元素的组合数
根据这个公式用变量和循环来做
#include <stdio.h>
int main() {
int s = 1, n;
int i, j;
while(scanf("%d", &n)!=EOF) {
printf("1\n");
for (i = 2; i <= n; s = 1, i++) {
printf("1 ");
for (j = 1; j <= i - 2; j++)
printf("%d ", (s = (i - j) * s / j));
printf("1\n");
}
printf("\n");
}
return 0;
}
不过推导过程对入门的来说还是挺费时间的
所以当时做的时候还是用的传统的二维数组来写的
#include <stdio.h>
int main() {
int a[100][100] ;
int i,j,n;
while(scanf("%d",&n)!=EOF) {
for(i=1 ; i<=n; i++) {
for(j=1; j<=i; j++) {
if(j==1)
a[i][j]=1;
else
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
}
for(i=1; i<=n; i++) {
for(j=1; j<=i; j++) {
printf("%d",a[i][j]);
if(j!=i)
printf(" ");
}
printf("\n");
}
printf("\n");
}
return 0;
}
也是有纪念意义的一题啊~