非負整数numRowsの数を考えると、パスカルの三角形の最初のnumRowsの数を生成します。
パスカルの三角形において、各数値は、直接上記2つの数の合計です。
例:
入力:5
出力
:
[ [1]、
[1,1]、
[1,2,1]、
[1,3,3,1]、
[1,4,6,4,1]
]
出力
:
[ [1]、
[1,1]、
[1,2,1]、
[1,3,3,1]、
[1,4,6,4,1]
]
効果の件名:
パスカルの三角形のn行は出力前に、二次元ベクトルとして表現しました。
理解:
2ラインは、初期化の前に生じます。得られた蓄積前の行を使用して、ラインの3-N、。
コードC ++:
クラス解決{ パブリック: ベクトル <ベクトル< INT >>生成する(INT numRowsの数){ ベクトル <ベクトル< INT >> VEC。 もし(numRowsの数は== 0)を返すVEC; ベクトル < int型 > rowVec。 rowVec.push_back(1 )。 vec.push_back(rowVec)。 もし(numRowsの数は== 1)を返すVEC。 rowVec.push_back(1 )。 vec.push_back(rowVec)。 もし(numRowsの数== 2)リターンVEC。 int型私= 3 ; 一方、(I <= numRowsの数){ rowVec.clear()。 rowVec.resize(I); rowVec [ 0 ] = 1 。 int型 J = 1 ; ながら(J <I- 1 ){ rowVec [j]は VEC = [I- 2 ] [J- 1 ] + VEC [I- 2 ] [J]。 ++ J; } rowVec [I - 1] = 1 。 vec.push_back(rowVec)。 ++ 私は、 } 戻りの事。 } }。
結果:
で実行する場合: 0 MSの メモリ消費量: 8.8メガバイトを