nyoj 536 開心的mdd 最優矩陣鏈乘 dp

2021-07-27 15:32:04 字數 1056 閱讀 7239

時間限制:

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)

輸出輸出計算矩陣所要的最少乘法次數。

樣例輸入

3

10 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 元錢就行 今天一早小明就開始做預算,但是他想買的東西太...