給定n個矩陣{a1,a2,…,an},其中ai與ai+1是可乘的,i=1,2 ,…,n-1。如何確定計算矩陣連乘積的計算次序,使得依此次序計算矩陣連乘積需要的數乘次數最少。
這其實是個很簡單的問題,區間dp模板題,dp[i][j],表示區間i到j合併的最小值,列舉k表示分割點,dp[1][n]即為答案
轉移方程:dp[i][j]=min(dp[i][j],dp[i][k]+d[k+1][j]+b[i]*b[k+1]*b[j+1]
for (int h = 1; h < n; h++)}}
複雜度 o(n3)
#include#include#include#include#include#include#include#include#include#include//#include#include#includeusing namespace std;#define ll long long
#define ull unsigned long long
#define pii pair#define pii pair#define m_p make_pair
#define l_b lower_bound
#define u_b upper_bound
const int inf = 0x3f3f3f3f;
const ll linf = 0x3f3f3f3f3f3f3f3f;
const int maxn = 600 + 11;
const int maxm = 600 + 11;
const int mod = 1e9 + 7;
const double eps = 1e-5;
ll rd() while (ch >= '0'&&ch <= '9') return x * f; }
inline ll qpow(ll a, ll b, ll p) b >>= 1; a = a * a%p; }return res; }
inline ll gcd(ll a, ll b)
//iterator
//head
//priority_queue
int b[maxn], dp[maxn][maxn],a[maxn];
int main()
for (int h = 1; h < n; h++)
} }cout << dp[1][n] << endl;
return 0;
}
演算法第八次作業
題目 given an integer,convert it to a roman numeral.class solution if num 400 else int num c num 100 for int j 0 jstr c num num 100 if num 90 if num 40 ...
第八次作業
練習題 1 怎麼查出通過 from xx import xx導 的可以直接調 的 法?在test package資料夾中建立 init py檔案,裡邊什麼都不需要編輯。在 中把test package的檔案的路徑加入到python直譯器可以搜尋到的路徑列表中,這裡就用到了python的包sys模組 ...
第八次作業
用python實現k均值演算法,鳶尾花花瓣長度資料做聚類並用散點圖顯示。import numpy as np 隨機生成乙個陣列 x np.random.randint 1,100,20,1 y np.zeros x.shape 0 dtype int k 3iris length 1.4,1.4,1...