【杭電oj】楊輝三角(配列数打表)

1821 ワード

楊輝三角
Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 54099    Accepted Submission(s): 22480
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

 
Author
lcy
 
Source
C言語プログラミング練習(五)
楊輝三角の方法で配列数打表の方法を記憶する.
コードは次のとおりです.
#include <cstdio>
int c[44][44];
void C()
{
	c[0][0] = 0;
	for (int i = 1 ; i <= 30 ; i++)
	{
		c[i][0] = 1;
		c[i][i] = 1;
	}
	for (int i = 1 ; i <= 30 ; i++)
	{
		for (int j = 1 ; j < i ; j++)
			c[i][j] = c[i-1][j] + c[i-1][j-1];
	}
}
int main()
{
	C();
//	for (int i = 1 ; i <= 30 ; i++)
//	{
//		for (int j = 0 ; j <= i ; j++)
//			printf ("%d ",c[i][j]);
//		printf ("
"); // } int n; while (~scanf ("%d",&n)) { if (n == 1) { printf ("1

"); continue; } printf ("1
"); for (int i = 1 ; i < n ; i++) { printf ("%d",c[i][0]); for (int j = 1 ; j <= i ; j++) { printf (" %d",c[i][j]); } printf ("
"); } printf ("
"); } return 0; }