Jadi saya melakukan ini dengan cara yang aneh. Saya perhatikan bahwa ada dua pola dalam bentuk array.
Yang pertama adalah bagaimana pola baris atas memiliki perbedaan antara setiap suku yang meningkat dari 1 -> h di mana h adalah tinggi dan l adalah panjangnya. Jadi saya membuat baris teratas berdasarkan pola itu
Untuk matriks redup (3,4) memberi max RoC = 3Kita akan melihat baris atas formulir
1, (1+1), (2+2), (4+3) = 1, 2, 4, 7
Misalkan saja redup (3,9) yang memberi max RoC = 3kita malah akan melihat baris atas
`1, (1+1), (2+2), (4+3), (7+3), (10+3), (13+3), (16+3), (19+3) = 1, 2, 4, 7, 10, 13, 16, 19, 22
Pola kedua adalah bagaimana baris berubah dari satu sama lain. Jika kita mempertimbangkan matriks:
1 2 4 7 11
3 5 8 12 16
6 9 13 17 20
10 14 18 21 23
15 19 22 24 25
dan kurangi setiap baris dari baris di bawah ini (mengabaikan baris tambahan) yang kita dapatkan
2 3 4 5 5
3 4 5 5 4
4 5 5 4 3
5 5 4 3 2
Setelah melihat matriks ini, kita dapat melihat bahwa matriks ini adalah urutan di 2 3 4 5 5 4 3 2mana oleh setiap baris adalah 5 istilah dari pola ini digeser oleh 1 untuk setiap baris. Lihat di bawah untuk visual.
|2 3 4 5 5| 4 3 2
2 |3 4 5 5 4| 3 2
2 3 |4 5 5 4 3| 2
2 3 4 |5 5 4 3 2|
Jadi untuk mendapatkan matriks terakhir kita ambil baris pertama yang kita buat dan output baris yang ditambahkan dengan 5 syarat yang diperlukan dari pola ini.
Pola ini akan selalu memiliki karakteristik awal 2-> max valuedan akhir di max value -> 2mana max value = min(h+1, l)dan berapa kali nilai maksimum akan muncul adalah di appearances of max = h + l -2*c -2manac = min(h+1, l) - 2
Jadi secara keseluruhan metode saya membuat baris baru terlihat seperti
1 2 3 7 11 + |2 3 4 5 5|4 3 2 = 3 5 8 12 16
3 5 8 12 16 + 2|3 4 5 5 4|3 4 2 = 6 9 13 17 20
6 9 13 17 20 + 2 3|4 5 5 4 3|4 2 = 10 14 18 21 23
10 14 18 21 23 + 2 3 4|5 5 4 3 2| = 15 19 22 24 25
Kode yang relevan di bawah ini. Itu tidak berakhir pendek tapi saya masih suka metode.
o,r=len,range
def m(l,h):
a,t=[1+sum(([0]+[x for x in r(1,h)]+[h]*(l-h))[:x+1]) for x in r(l)],min(l,h+1);s,c=[x for x in r(2,t)],[a[:]]
for i in r(h-1):
for j in r(o(a)):
a[j]+=(s+[t]*(l+h-2*(t-2)-2)+s[::-1])[0+i:l+i][j]
c+=[a[:]]
for l in c:print(l)
Cobalah online!