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; }
原文:https://www.cnblogs.com/liufei-/p/9292000.html