杨辉三角
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 34277 Accepted Submission(s): 14305
Problem Description
还记得中学时候学过的杨辉三角吗?具体的定义这里不再描述,你可以参考以下的图形:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
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
//思路:①每行除第一个数为1外,后面第N个数等于上一行第N-1个数与第N个数的和
// ②用num2记录的上一行数据对num1记录的本行数据进行处理,随后将num1的数据交给num2
#include<iostream>
using namespace std;
void main()
{
int n,i,j,k,l;
while(cin>>n)
{
int num1[30]={1},num2[30]={1}; //数组初始化(令两个数组的第一个数为1)
for(i=1;i<=n;i++)
{
for(l=0;l<i;l++) //将num1的数据交给num2
{
num2[l]=num1[l];
}
for(j=1;j<i;j++)
{
num1[j]=num2[j-1]+num2[j]; //第N个数等于上一行第N-1个数与第N个数的和
}
for(k=0;k<i;k++)
{
if(k!=i-1) cout<<num1[k]<<' ';
else cout<<num1[k];
}
cout<<endl;
}
cout<<endl; //每组数据后要额外空一行
}
}