思路:
每行的數是有規律的,以n=4為例,第一行的第乙個數是1,第二數是1+2=3,第三個數是3+3 =6,第四個數是6+4=10,總共加了n-1次分別是range(2,n+1),第二行的第乙個數是1+1=2,第二個數是2+3=5,第三個是5+4=9,總共加了n-2次,分別是range(3,n+1)。第三行第乙個數是第二行第乙個數加2,2+2 =4,第二個數是4+4=8,總共加n-3次為range(4,n+1),第四行第乙個數是第三行第乙個數加3,4+3=7,第四行沒有其他數因為n-4=0。泛化成數字表示,第i行的第j個數等於第i行的前乙個數加list(range(i+1,n+1))[j]。dp[i][j]=dp[i][j-1]+list(range(i+1,n+1))[j]。我們需要每一行的第乙個數,dp[i][1]=dp[i-1][i]+i-1。所以第一行的第乙個數必須初始化為1。為了方便迭代,我們初始化乙個dp[0][1]=1,第一行的第乙個數是dp[1][1]=dp[0][1]+1-1=1。其他的每個數按迭代方式更新。**如下:
while
true
:try
: n =
int(
input()
) a =
1#初始化dp[0][1]
for i in
range(1
,n+1):
#更新第i行的後面的數
list1 =
a = a + i -
1 b = a
str(a)
)for i2 in
range
(i+1
,n+1):
#更新第i+1行的第乙個數,為下一輪第i+1行的更新做準備
b = b + i2
str(b)
)print
(' '
.join(list1)
)except
:break
華為OJ 蛇形矩陣
蛇形矩陣 題目說明 蛇形矩陣是由1 開始的自然數依次排列成的乙個矩陣上三角形。樣例輸入 5 樣例輸出 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11 介面說明 原型 void getresult int num,char presult 輸入引數 int num 輸入的正整數...
華為OJ 蛇形矩陣
題目說明 蛇形矩陣是由1開始的自然數依次排列成的乙個矩陣上三角形。樣例輸入 5 樣例輸出 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11 介面說明 原型 void getresult int num,char presult 輸入引數 int num 輸入的正整數n 輸出引數...
華為OJ 蛇形矩陣
蛇形矩陣是由1開始的自然數依次排列成的乙個矩陣上三角形。樣例輸入 5樣例輸出 1 3 6 10 15 2 5 9 14 4 8 13 7 1211 原型 void getresult int num,char presult 輸入引數 int num 輸入的正整數n 輸出引數 int presult...