亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在矩陣內部尋找內矩陣外層的算法

在矩陣內部尋找內矩陣外層的算法

BIG陽 2023-04-26 14:45:16
我正在嘗試解決以下算法,但卡住了。我希望你能幫忙。通過給出:大小為 N*N 的主矩陣大小為 K*L 的內矩陣(內矩陣包含在主矩陣中,索引已給出)。我應該編寫一個函數,返回內部矩陣外層所有元素的列表。如果沒有元素,則返回一個空列表。在每次迭代中,內層矩陣的大小越來越大,包括之前的內層矩陣+外層。例如:通過給定黑色主矩陣和紅色內矩陣,返回黃色標記的元素。繼續直到返回一個空列表。我被困在哪里通過增加內部矩陣的范圍 +1 并比較主矩陣和內部矩陣的邊緣,我可以輕松找到外層的元素。但是,我卡住了如何一般地增加循環(增加層數)。順便說一句,我試圖避免遞歸解決方案。
查看完整描述

1 回答

?
躍然一笑

TA貢獻1826條經驗 獲得超6個贊

如果我正確理解了您的問題,您可以簡單地分別跟蹤內部矩陣 (y1, x1) 和 (y2, x2) 左上角和右下角的坐標。然后,您可以輕松獲得外層并擴展內部矩陣,如下所示:

獲取外層:這些元素的坐標是

  • (y1-1, j) for j in max(0, x1-1),...,min(N-1, x2+1) (頂行,如果 y1 > 0)

  • (y2+1, j) for j in max(0, x1-1),...,min(N-1, x2+1) (底行,如果 y2 < N-1)

  • (i, x1-1) for i in y1,...,y2(左列,如果 x1 > 0)

  • (i, x2+1) for i in y1,...,y2(右列,如果 x2 < N-1)

擴展內部矩陣:你只需要更新角坐標

  • y1 = max(0, y1-1), x1 = max(0, x1-1)

  • y2 = min(N-1, y2+1), x2 = min(N-1, x2+1)

然后重復,直到 (y1, x1) == (0, 0) 和 (y2, x2) == (N-1, N-1)


查看完整回答
反對 回復 2023-04-26
  • 1 回答
  • 0 關注
  • 134 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號