可以用递归,就是速度慢些,也可以直接把递归改成自顶向下的动归,或者直接用自底向上的动归,都可以,不过这里只是为了计算14年阿里笔试的一道题,所以就直接写了个递归版本的。
代码:
#include<iostream>
using namespace std;int fun(int *A,int lo,int hi)
{if(lo==hi)return 0;int q=INT_MAX;for(int i=lo;i<hi;i++)q=min(q,fun(A,lo,i)+fun(A,i+1,hi)+A[lo-1]*A[i]*A[hi]);return q;
}int main()
{ int A[7]={5,10,3,8,5,20,6};int k=fun(A,1,6);cout<<k<<endl;system("pause");return 0;
}
本文发布于:2024-01-31 12:41:49,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170667611228594.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |