杨辉三角

Description

还记得中学时候学过的杨辉三角吗?具体的定义这里不再描述,你可以参考以下的图形: 
1 
1 1 
1 2 1 
1 3 3 1 
1 4 6 4 1 
1 5 10 10 5 1 
 
Input

输入数据包含多个测试实例,每个测试实例的输入只包含一个正整数n(1<=n<=30),表示将要输出的杨辉三角的层数。
 
Output

对应于每一个输入,请输出相应层数的杨辉三角,每一层的整数之间用一个空格隔开,每一个杨辉三角后面加一个空行。
 
Sample Input

 2 3 
 
Sample Output

 1
1 1

1
1 1
1 2 1 

//貌似属于打表与查表??

 

#include <iostream>
using namespace std;
int n;
#define Maxn 32
int dp[Maxn][Maxn];      //定义一个二维数组,用来装输出的杨辉三角,且定义在全局,此二维数组的元素全为0
int fun()
{
    for(int i=1;i<=Maxn;i++)  //这个for循环是把每一行第一个和最后一个元素赋值为1
    {
        dp[i][1]=1;
        dp[i][i]=1;
    }
    for(int i=3;i<=Maxn;i++)   //把每一行不是第一个和最后一个的元素赋值,此元素等于上两个元素之和。(用了一个循环嵌套)
    {
        for(int j=2;j<=Maxn;j++)
        {
            dp[i][j]=dp[i-1][j-1]+dp[i-1][j];
        }
    }
return 0; }
int main() { fun(); //调用函数,打表 while(cin>>n) { for(int i=1;i<=n;i++) //控制行(n)的输出 { for(int j=1;j<=i;j++) //控制每行对应的列的输出 { if(j-1) //若j-1不等于0,输出空格 { cout<<" "; } cout<<dp[i][j]; //输出杨辉三角 } cout<<endl; 每个杨辉三角之间的换行 } cout<<endl; 最后一个换行 } return 0; }

 

posted @ 2018-07-11 21:44  RAIN-code  阅读(354)  评论(0编辑  收藏  举报