1574 - 杨辉三角
时间限制 : 1 秒
内存限制 : 32 MB
输入n值,使用递归函数,求杨辉三角形中各个位置上的值,按照如下形式(见样例)打印输出图形。
题目输入
输入第一行为样例数m,接下来有m行,每行一个整数n,n不超过10。
题目输出
根据输入的n输出对应的图形。
输入/输出样例
输入格式
1 6
输出格式
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
C语言解答
#include<stdio.h> void fun(int a[][50],int n) { int i,j; for(i=0;i<n;i++) for(j=0;j<=i;j++) { if(i==j) a[i][j]=1; else if(j==0) a[i][j]=1; else a[i][j]=a[i-1][j-1]+a[i-1][j]; } } int main() { int i,j,k,n,m; int a[50][50]; scanf("%d",&m); for(i=0;i<=m;i++){ k=1; while(scanf("%d",&n)==1){ fun(a,n); for(i=0;i<n;i++) { for(j=0;j<n-i-1;j++) printf(" "); for(j=0;j<=i;j++) { if(j==i) printf("%d",a[i][j]); else printf("%d ",a[i][j]); } printf("\n"); } } } return 0; }
C++解答
#include <iostream> #include <cstdio> using namespace std; int fun(int n,int k) { if(k==0 || n==k) return 1; else return fun(n-1,k-1)+fun(n-1,k); } int main() { //freopen("test.in", "r", stdin); //freopen("test.out", "w", stdout); int i,j,n,t; cin >> t; while (t--) { cin>>n; for(i=0; i<n; i++) { for(int k=0; k<n-i-1; k++) cout<<" "; for(j=0; j<i; j++) cout<<fun(i,j)<<" "; cout<<fun(i,i)<<endl; } } return 0; }