ADV-232-矩阵乗法
来源:互联网 发布:淘宝代购会被投诉吗 编辑:程序博客网 时间:2024/06/10 19:46
问题描述
有n个矩阵,大小分别为a0*a1, a1*a2, a2*a3, ..., a[n-1]*a[n],现要将它们依次相乘,只能使用结合率,求最少需要多少次运算。
两个大小分别为p*q和q*r的矩阵相乘时的运算次数计为p*q*r。
两个大小分别为p*q和q*r的矩阵相乘时的运算次数计为p*q*r。
输入格式
输入的第一行包含一个整数n,表示矩阵的个数。
第二行包含n+1个数,表示给定的矩阵。
第二行包含n+1个数,表示给定的矩阵。
输出格式
输出一个整数,表示最少的运算次数。
样例输入
3
1 10 5 20
1 10 5 20
样例输出
150
数据规模和约定
1<=n<=1000, 1<=ai<=10000。
C
#include <stdio.h>long long N=3;long long matri[1002]={1,10,5,20};long long record[1002][1002]; /*int fun(int start,int end){int i=0;int min=9999999999,temp=0;if(start==end||start<=0||end>N) return 0;if(record[start][end]!=0) return record[start][end];for(i=start;i<end;i++){temp=fun(start,i)+fun(i+1,end)+matri[start-1]*matri[i]*matri[end];if(min>temp) min=temp;}record[start][end]=min;return min;} */ //效率低 只有40分void fun02(){long long i,j,k=0,len=0;long long temp=0;for(i=0;i<=N;i++) for(j=0;j<=N;j++) record[i][j]=0;for(len=2;len<=N;len++){ for(i=1;i<=N-len+1;i++){ j=i+len-1;record[i][j]=9999999999999;for(k=i;k<=j-1;k++){ temp=record[i][k]+record[k+1][j]+matri[i-1]*matri[k]*matri[j];if(temp<record[i][j]) record[i][j]=temp;}}} } /* */int main() { long long i=0,j=0;scanf("%lld",&N);for(i=0;i<=N;i++) scanf("%lld",&matri[i]); /* */fun02();printf("%lld\n",record[1][N]);return 0;}
C++
#include<iostream>using namespace std;int main(){int n;long long l,answer[1001][1001], i, j, k,a[1001],temp;cin >> n;for (i = 0; i <= n; i++)cin >> a[i];for (i = 1; i <= n; i++) //第一阶段answer[i][i] = 0; //赋初值for (l = 2; l <= n; l++) //其他n-1个阶段{for (i = 1; i <= n - l+1; i++) //n-1+l有关的表达式{j = i +l-1;answer[i][ j] = 1000000000000;for (k = i; k <= j - 1; k++){temp = answer[i][k] + answer[k + 1][j] + a[i - 1] * a[k] * a[j]; //状态转移方程if (temp < answer[i][j])answer[i][j] = temp; //由子问题最优解求解整个方案}}}cout << answer[1][n];}
阅读全文
0 0
- ADV-232-矩阵乗法
- ADV-2-矩阵翻转
- 蓝桥 ADV-232 算法提高 矩阵乘法 【区间DP】
- 蓝桥杯 ADV-208 算法提高 矩阵相乘
- 蓝桥杯 ADV-208 算法提高 矩阵相乘
- ADV-70-算法提高-冒泡法排序
- 算法提高 ADV-70 冒泡法排序
- 蓝桥杯 ADV-70 算法提高 冒泡法排序
- 蓝桥杯 ADV-70 算法提高 冒泡法排序
- Adv code
- BATMAN-ADV
- adv链接tv
- MySQl-adv-01
- MySQL-adv-02
- ADV-165超级玛丽
- ADV-181 质因数2
- ADV-152 产生数
- ADV-163 能量项链
- Java swing
- C/C++中extern关键字详解
- redis集群搭建
- python常见的异常错误
- 精 挑 细 选(结构体排序)
- ADV-232-矩阵乗法
- 莫烦tensoflow视频笔记
- 编写函数,将一个数据插入有序数组,要求插入后数组仍然有序
- odb对象关系映射系统
- 1002. 写出这个数 (20)
- Lock和synchronized比较详解
- 徐登沿的第十三个程序(如何读取五个人的成绩,然后输出它们的平均值)
- QT中TCP UDP编程
- Linux进程的一些基础知识