二周:HDU 2032——杨辉三角

杨辉三角
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;
}

猜你喜欢

转载自blog.csdn.net/weixin_43887417/article/details/85028636