杨辉三角
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 95721 Accepted Submission(s): 38562
Problem 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
问题链接:HDU 2032
问题简述:输出中学时候学过的杨辉三角,n代表是输出到几行。
问题分析:。。。。。。。
程序说明:先创建个3030的数组(保险点用3131),把每行第一个与最后一个赋值1,便可通过杨辉三角的定义来做题了。总体思路是先计算出三十行杨辉三角再通过n判断到底输出几行。
AC通过代码:
#include<stdio.h>
int main()
{
int n;
int i,j,k;
int s[31][31]={0};
for(i=0;i<30;i++)
{
s[i][i]=1;
s[i][0]=1;
}
for(j=2;j<30;j++)
{
for(k=1;k<2*(j-1);k++)
{
s[j][k]=s[j-1][k-1]+s[j-1][k];
}
}
while(scanf("%d",&n)!=EOF)
{
for(i=1;i<=n;i++)
{
for(j=0;j<i-1;j++)
{
printf("%d ",s[i-1][j]);
}
printf("%d\n",s[i-1][j]);
}
printf("\n");
}
return 0;
}