国产探花免费观看_亚洲丰满少妇自慰呻吟_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;}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安多县| 姚安县| 义马市| 瓦房店市| 汨罗市| 彰武县| 田东县| 新民市| 读书| 华池县| 福清市| 青岛市| 彭州市| 西畴县| 揭阳市| 文登市| 嘉荫县| 外汇| 恭城| 前郭尔| 景德镇市| 屯门区| 龙岩市| 开江县| 潼关县| 瑞金市| 威远县| 永年县| 北宁市| 秭归县| 平江县| 芜湖县| 鸡西市| 凉山| 双江| 绵阳市| 改则县| 辽宁省| 龙口市| 三门县| 宜黄县|