タイトル説明
リソース制限
時間制限:1.0秒メモリ制限:256.0MB
問題の説明
ヤン・フイの三角形はパスカルの三角形とも呼ばれ、そのi +1行目は(a + b)iの展開係数です。その重要な特性の1つは、三角形の各数値が2つの肩の数値の合計に等しいことです。
ヤンホイの三角形の最初の4行を以下に示します。
1
1 1
1 2 1
1 3 3 1
nを指定して、最初のn行を出力します。
入力形式
入力には数値nが含まれます
出力形式
Yanghui三角形の最初のn行を出力します。各行は、スペースで区切られた、この行の最初の番号から順番に出力されます。前に余分なスペースを出力しないでください。
サンプル入力
4
サンプル出力
11
1 1
2 1
1 3 3 1
データスケールと規則
1 <= n <= 34
アイデア:
- n * n個の2次元配列numを作成し、最初の試行ですべての要素を0に置き換えることができます
- 各行の最初の数字は1で、下の数字は上の左と右の数字の合計に等しくなります。iが行を表し、jが列を表す場合、
nums [i] [j] = nums [i-1] [j-1] + nums [i-1] [j] - まず、ループを介してnums 2次元配列内の要素に値を割り当て、次にループを介して各要素を出力します。要素が0の場合、出力されません。
コード:
n = int(input())
nums = [[0] * n for i in range(n)]
for i in range(n) :
for j in range(n) :
if j == 0 :
nums[i][j] = 1
else :
nums[i][j] = nums[i-1][j-1] + nums[i-1][j]
for i in range(n) :
for j in range(n) :
if nums[i][j] != 0 :
print(nums[i][j],end=" ")
print()
評価結果:
コード分析:
- リストを含むすべてのオブジェクトをリストに保存できます
my_list = [10,'hello',True,None,[1,2,3]]
print(my_list)
# [10, 'hello', True, None, [1, 2, 3]]
- *を使用して、リスト内の要素を指定された回数繰り返します
num1 = [0]*5
print(num1) # [0, 0, 0, 0, 0]
num2 = [1,2,3] * 3 # [1, 2, 3, 1, 2, 3, 1, 2, 3]
print(num2)
num3 = [[0] * 5] # [[0, 0, 0, 0, 0]]
print(num3)
num4 = [[0,0,0]] * 3 # [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
print(num4)
- 入力nに従って、n * nの「2次元配列」を作成できます(実際には、リストまたはリスト内の要素です)
- 作成する正しい方法は次のとおりです
n = int(input())
nums = [[0] * n for i in range(n)]
- たぶん何人かの友人はこのようにそれを作成しようとします
num = [[0,0,0]] * 2
print(num)
# 输出:[[0, 0, 0], [0, 0, 0]]
結果は正しいようですが、プログラムは正しく実行されません。その理由は、この作成方法に問題があるためです。
num[0][0] = 1
print(num)
# 输出:[[1, 0, 0], [1, 0, 0]]
num [0] [0]を変更すると、num [1] [0]も変更されます
上記の作成方法は、
temp = [0] * 2
num = [temp,temp]
- リスト内のオブジェクトは挿入順にリストに格納され、リスト内の要素はインデックスによって取得できます。インデックスは0から始まる整数で、リストの最初の位置には0のインデックスが付けられ、2番目の位置のインデックスは1になり、3番目の位置のインデックスは2になります。インデックスが負の場合、要素を後ろから前に取得します。-1は最初から最後を意味し、-2は最後から2番目を意味します。
num = [[1,2,3],[4,5,6],[7,8,9]]
print(num[-1][-1])
# 输出:9