時間限制:
1000 ms | 記憶體限制:
65535 kb
難度:3 描述
himdd有一天閒著無聊,隨手拿了一本書,隨手翻到一頁,上面描述了乙個神奇的問題,貌似是乙個和矩陣有關的東西。
給出三個矩陣和其行列a1(10*100),a2(100*5),a3(5*50)。現在himdd要算出計算矩陣所要的乘法次數,他發現不同的計算次序,所要的乘法次數也不一樣,
如:(a1*a2)*a3 : 10*100*5+5*10*50=7500;
a1*(a2*a3) : 5*100*50+10*100*50 =75000;
注意:矩陣不可改變順序。
輸入
有多組測試資料(<=100),每組表述如下:
第一行,有乙個整數n矩陣的個數(1<=n<=100)
接下來有n行
第i行有兩整數,r,c表示第i個矩陣的行列;(1<=r,c<=100)
輸出輸出計算矩陣所要的最少乘法次數。
樣例輸入
310 100
100 5
5 50
樣例輸出
7500
分析:本題型別是最優矩陣鏈乘問題,狀態方程dp(i,j)=min(dp(i,k)+dp(k+1,j)+r[i]*c[k]*c[j]);其中(0ac**;
#include#include#includeusing namespace std;
#define inf 2147483647
const int maxn=100+10;
int r[maxn],c[maxn];
int d[maxn][maxn];
int n;
int dp(int i,int j)
for(int len=2;len<=n;len++) //長度
for(int i=1;i<=n-len+1;i++)
printf("%d\n",dp[1][n]);
} return 0;
}
NYOJ 536 開心的mdd 矩陣鏈乘
題意 給出n個矩陣組成的序列,問最少的運算量 看的紫書 dp i j 表示從第i個矩陣到第j個矩陣最少的乘法次數 dp i j min dp i j dp i k dp k 1 j p i 1 p k p j 邊界條件為dp i i 0,因為從乙個矩陣自己到它自己不需要做乘法 然後把dp i j 初...
NYOJ 開心的小明
時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 小明今天很開心,家裡購置的新房就要領鑰匙了,新房裡有一間他自己專用的很寬敞的房間。更讓他高興的是,媽媽昨天對他說 你的房間需要購買哪些物品,怎麼布置,你說了算,只要不超過n 元錢就行 今天一早小明就開始做預算,但是他想買的東西太...
Nyoj 開心的小明49
時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 小明今天很開心,家裡購置的新房就要領鑰匙了,新房裡有一間他自己專用的很寬敞的房間。更讓他高興的是,媽媽昨天對他說 你的房間需要購買哪些物品,怎麼布置,你說了算,只要不超過n 元錢就行 今天一早小明就開始做預算,但是他想買的東西太...