先來簡單分析下,由於矩陣中對角線上的元素始終爲0,因此以k爲中間點時,從上一個矩陣到下一個矩陣變化時,矩陣的第k行,第k列和對角線上的元素是不發生改變的(對角線上都是0,因爲一個頂點到自己的距離就是0,一直不變;而當k爲中間點時,k到其他頂點(第k行)和其他頂點到k(第k列)的距離是不變的)。
因此每一步中我們只需要判斷4*4-3*4+2=6個元素是否發生改變即可,也就是要判斷既不在第k行第k列又不在對角線上的元素。具體計算步驟如下:以k爲中間點(1)“三條線”:劃去第k行,第k列,對角線(2)“十字交叉法”:對於任一個不在三條線上的元素x,均可與另外在k行k列上的3個元素構成一個2階矩陣,x是否發生改變與2階矩陣中不包含x的那條對角線上2個元素的和有關,若二者之和小於x,則用它們的和替換x,對應的Path矩陣中的與x相對應的位置用k來替代。。。
下面來具體看高分筆記上面的那個題目吧。。。。
詳細圖解:
經過以上4步就可以得到最終結果了。。。寫的比較繁瑣,但是看明白了之後,計算將會非常簡單啊。。。。。