国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

算法提高 矩陣乘法 藍橋杯

2019-11-08 19:27:04
字體:
來源:轉載
供稿:網友
問題描述  有n個矩陣,大小分別為a0*a1, a1*a2, a2*a3, ..., a[n-1]*a[n],現要將它們依次相乘,只能使用結合率,求最少需要多少次運算。  兩個大小分別為p*q和q*r的矩陣相乘時的運算次數計為p*q*r。輸入格式  輸入的第一行包含一個整數n,表示矩陣的個數。  第二行包含n+1個數,表示給定的矩陣。輸出格式  輸出一個整數,表示最少的運算次數。樣例輸入31 10 5 20樣例輸出150數據規模和約定

  1<=n<=1000, 1<=ai<=10000。

類似于合并石子問題

子問題:矩陣i到j合并最小花費

一開始dp數組用longlong,行列數用int,數據較大時答案錯誤,都改成longlong就好了,但是最后一組運行超時。

#include<stdio.h>#define min(a,b) a<b?a:bint n;long long dp[2000][2000]={0};struct Matrix{long long l;long long c;}b[2000];long long f(int u,int v){int k;long long q=99999999999999999;if(u==v)return 0;if(dp[u][v]) return dp[u][v];for(k=u;k<v;k++){  q=min(q,f(u,k)+f(k+1,v)+b[u].l*b[k].c*b[v].c);}return dp[u][v]=q;}int main(){int i;scanf("%d",&n);for(i=0;i<=n;i++){    scanf("%lld",&b[i].c);    b[i+1].l=b[i].c;}PRintf("%lld",f(1,n));return 0;}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 武定县| 通化县| 灌云县| 金门县| 武威市| 和硕县| 麻江县| 黔东| 临泉县| 雷波县| 凤阳县| 威宁| 尤溪县| 翼城县| 拉萨市| 双牌县| 海伦市| 西畴县| 安吉县| 龙陵县| 彰武县| 虞城县| 芒康县| 萨嘎县| 安康市| 临高县| 波密县| 马山县| 惠州市| 靖安县| 烟台市| 新余市| 集贤县| 巴青县| 康保县| 乐平市| 黄冈市| 平武县| 宁南县| 岳西县| 抚州市|