題意:驗證兩個矩陣a * b相乘是否等於c;
思路:直接相乘的話n^3,不行;
可以加入乙個輔助行矩陣h,如果a * b = c,那麼 h * a * b = h * c,因為h * a 之後還是乙個行矩陣,時間複雜度為n^2。不過為了避免錯誤,h陣列需要隨機。
code:
#include#include#include#includeusing namespace std;
const int maxn = 500 + 10;
int a[maxn][maxn],b[maxn][maxn],c[maxn][maxn];
int h[maxn];
int d[maxn],e[maxn],f[maxn];
int n;
bool is_()
for(int i = 0; i < n; i ++)
for(int i = 0; i < n; i ++)
for(int i = 0; i < n; i ++)
return true;
}int main()
}if(ans)
puts("yes");
else puts("no");
}return 0;
}
矩陣乘法優化 poj3318 隨機矩陣
給定矩陣a,b,c,求檢驗a b 是否等於c。n 500 普通矩陣乘法是o n 3 但是如果用乙個1 n的矩陣和n n矩陣相乘只需要o n 2 所以可以用乙個隨機矩陣r a b r c rand 隨機生成 0,rand max 的數 如果想要 0,n 內的隨機數 n比rand max 小,取餘 n比...
隨機化演算法
隨機化演算法的主要目的是希望讓隨機發生在演算法上,而不是發生在輸入分布上,這樣的話,沒有特別的輸入會引起我們的演算法的最壞情況。即使你最壞的敵人也無法產生最壞的輸入陣列。因為隨機排列使得輸入次序不再相關。只有在隨機數生成器產生乙個不走運的排列時,隨機演算法才會執行得很差。一.隨機優先順序陣列法 我們...
隨機化搜尋
參與考古挖掘的小明得到了乙份藏寶圖,藏寶圖上標出了 nn 個深埋在地下的寶藏屋,也給出了這 nn 個寶藏屋之間可供開發的mm 條道路和它們的長度。小明決心親自前往挖掘所有寶藏屋中的寶藏。但是,每個寶藏屋距離地面都很遠,也就是說,從地面打通一條到某個寶藏屋的道路是很困難的,而開發寶藏屋之間的道路 則相...