トピック:
n が与えられた場合、Yang Hui の三角形の最初の n 行を出力してください
咳咳、これは非常に有名で古典的な質問ですが、楊輝三角が何であるかは皆さんご存知だと思いますので、ここではこんにゃくについては繰り返しません。
楊輝の三角形は、南宋時代の数学者楊輝が 1261 年に書いた著書『九章アルゴリズム詳説』に登場する、三角形内に二項係数を幾何学的に配置したものです。ヨーロッパでは、パスカル (1623-1662) が 1654 年にこの規則を発見したため、この表はパスカルの三角形とも呼ばれます。パスカルの発見は楊輝の発見より 393 年後、賈賢の発見より 600 年遅かった。Yang Hui の三角形は、古代中国数学の優れた研究成果の 1 つです。これは、二項係数をグラフィックスで視覚化し、グラフィックスから合成数のいくつかの固有の代数的特性を直感的に反映しています。離散的な数と形状の組み合わせです。
問題解決のアイデア
上の図から、楊輝の三角形の両辺は 1 であることがわかり、考え方は非常に明確です。次に、すべての「1」を初期化し、残りの数値を押し出します。
コード
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<queue>
#include<cmath>
using namespace std;
int dp[1010][1010];
void init()
{
for (int i = 1; i <= 1000; i++)
dp[i][1] = dp[i][i] = 1;
for (int i = 2; i <= 1000; i++)
for (int j = 2; j < i; j++)
dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j];
}
void out(int n)
{
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= i; j++)
cout << dp[i][j] << ' ';
cout << endl;
}
}
int main()
{
init();
int n;
cin >> n;
out(n);
return 0;
}