問題描述:假設矩陣存在某種特殊運算,要求對矩陣任意乙個元素減1時,必須對其鄰居(上下左右)中的乙個同時減1。現給定乙個矩陣,要求判斷能否通過有限次特殊運算得到零矩陣
思路:回溯法。列舉所有可進行特殊運算的位置並以此遞迴,若出現元素小於0的情況則進行回溯。不用每次判斷零矩陣,只需要維護乙個計數變數cnt,統計當前矩陣非零元素個數。每次進行特殊運算時,更新cnt的值
**(效率較低,應該可以進一步優化):
int ok; //全域性變數,儲存判斷結果
void process(int ** a, int n, int m, int cnt)
if(i+1 < n && a[i+1][j]-1 >= 0)
if(j-1 >= 0 && a[i][j-1]-1 >= 0)
if(j+1 < m && a[i][j+1]-1 >= 0)
a[i][j]++; //記得恢復}}
} }}
特殊矩陣 稀疏矩陣
對於乙個m n的矩陣,設s為矩陣的元素總個數s m n,設t為矩陣中非零元素的個數,滿足t 稀疏矩陣的零元素非常多,且分布無規律,所以稀疏矩陣的壓縮儲存方法為 只儲存矩陣中的非零元素,按照三元組的形式儲存。三元組由非零元素,該元素行下標和該元素列下標三個資料構成,放在乙個列數為3的陣列中。儲存結構又...
矩陣及其特殊矩陣
之前我們已經用陣列的陣列方式寫了乙個二維陣列,並實現了其轉置,加法和乘法運算,現在我們將用行主描述方法重寫乙個矩陣及其運算。template class matrix int rows const int columns const t operator int i,int j const matr...
005 矩陣初始化 運算 特殊矩陣初始化
矩陣定義 m行 n列 import tensorflow as tf data1 tf.constant 6,6 data2 tf.constant 2 2 data3 tf.constant 3,3 data4 tf.constant 1,2 3,4 5,6 matmul tf.matmul da...