游客 Signup | Login
中文 | En

1574 - 杨辉三角

输入n值,使用递归函数,求杨辉三角形中各个位置上的值,按照如下形式见样例打印输出图形。

Input

输入第一行为样例数m,接下来有m行,每行一个整数n,n不超过10。

Output

根据输入的n输出对应的图形。

Examples

Input

1
6

Output

     1
    1 1
   1 2 1
  1 3 3 1
 1 4 6 4 1
1 5 10 10 5 1

Solution 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; 
}

Solution 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;
}

Time Limit 1 second
Memory Limit 32 MB
Discuss Stats
上一题 下一题