九度1073
输入n值,使用递归函数,求杨辉三角形中各个位置上的值。
这题用递归函数的做法:(TLE)
#include<stdio.h> #define MAX 110 int a [MAX][MAX]; int yang(int i,int j) { int y; if(j==0||j==i) return 1; else y=yang(i-1,j)+yang(i-1,j-1); return y; } int main() { int n; while(scanf("%d",&n)!=EOF) { int i,j; for(i=1;i<n;i++) { for(j=0;j<i;j++) { a[i][j]=yang(i,j); printf("%d ",a[i][j]); } a[i][i]=yang(i,i); printf("%d\n",a[i][i]); } } return 0; }
递归函数效率太低,因为每次循环都要用到一次递归,后来我发现这题根本用不到递归函数,完全被题目要求给坑了
AC代码:
#include<stdio.h> #define MAX 110 int a [MAX][MAX]; int main() { int n; while(scanf("%d",&n)!=EOF) { int i,j; a[0][0]=1;a[0][1]=1; for(i=1;i<n;i++) { a[i][0]=1; printf("%d ",a[i][0]); for(j=1;j<i;j++) { a[i][j]=a[i-1][j]+a[i-1][j-1]; printf("%d ",a[i][j]); } a[i][i]=1; printf("%d\n",a[i][i]); } } return 0; }