HDOJ印刷楊輝三角C言語実現
3102 ワード
中学時代に習った楊輝三角を覚えていますか.具体的な定義はここでは説明しませんが、1 1 1 1 1 2 1 1 3 1 4 4 1 5 10 5 1を参照してください.
Input
入力データには複数のテストインスタンスが含まれ、各テストインスタンスの入力には正の整数n(1<=n<=30)のみが含まれ、出力する楊輝三角の層数を表す.
Output
各入力に対応して、対応する層数の楊輝三角を出力し、各層の整数間をスペースで区切り、各楊輝三角の後ろに空行を追加します.
Sample Input
2 3
Sample Output
1 1 1
1 1 1 1 2 1
質問分析:楊輝三角を配列に保存してから、問題の要求に従って出力することができます.このように簡単だと思います.もちろん、問題の要求に従って印刷することもできます.初心者のプログラミング問題であることを考慮して、私は最も受け入れやすい方法でコードを書きます.以下のようにします.
Input
入力データには複数のテストインスタンスが含まれ、各テストインスタンスの入力には正の整数n(1<=n<=30)のみが含まれ、出力する楊輝三角の層数を表す.
Output
各入力に対応して、対応する層数の楊輝三角を出力し、各層の整数間をスペースで区切り、各楊輝三角の後ろに空行を追加します.
Sample Input
2 3
Sample Output
1 1 1
1 1 1 1 2 1
質問分析:楊輝三角を配列に保存してから、問題の要求に従って出力することができます.このように簡単だと思います.もちろん、問題の要求に従って印刷することもできます.初心者のプログラミング問題であることを考慮して、私は最も受け入れやすい方法でコードを書きます.以下のようにします.
#include
void main()
{
int n;
int a[30][31]={0};
int i,j;
a[0][0]=a[1][0]=a[1][1]=1; // 2 ,
for(i=2;i<30;i++)
for(j=0;j1;j++)
{
if(j==0||j==i)
a[i][j]=1; // , 1
else
a[i][j]=a[i-1][j-1]+a[i-1][j]; //
}
while(scanf("%d",&n)!=EOF) //
{
for(i=0;ifor(j=0;a[i][j]!=0;j++)
{
if(j==i)
printf("%d",a[i][j]);
else
printf("%d ",a[i][j]); // ,
}
printf("
");
}
printf("
"); // ,
}
}