パスカルの三角形を生成するために、レベル順序トラバーサルの概念を使用しています。
コードスニペットは次のとおりです。
void printPascalTriangle(int n)
{
int line=1,Q[50]={0},f=-1,r=-1,prev,t;
Enqueue(Q,&f,&r,1);
Enqueue(Q,&f,&r,0);
prev=0;
while(line!=n)
{
t = Dequeue(Q,&f,&r);
if( !t )
{
line++;
prev = 0;
Enqueue(Q,&f,&r,1);
if(!isEmpty(&r))
Enqueue(Q,&f,&r,0);
printf("\n");
}
else
{
printf("%d ", t);
Enqueue(Q,&f,&r,prev+t);
prev = t;
}
}
}
完全なコードはここにあります:
このアプローチの利点は、スペースの複雑さがO(N)であるということです。ここで、Nは行数です。
同じことをするより良い方法はありますか?