卡牌游戏

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zxk_hi/article/details/80353173

解题说明:

AC代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN=105;
const int inf=0x3f3f3f3f;
ll dp[MAXN][MAXN];
int s[MAXN];
int main(){
	int n;
	scanf("%d",&n);
	for(int i=1;i<=n;i++)scanf("%d",&s[i]);
	for(int l=3;l<=n;l++){
		for(int i=1;i<=n-l+1;i++){
			dp[i][i+l-1]=(ll)inf;
			for(int k=i+1;k<i+l-1;k++){
				dp[i][i+l-1]=min(dp[i][k]+dp[k][i+l-1]+(ll)(s[k]*s[i]*s[i+l-1]),dp[i][i+l-1]);
			}
		}
	}
	printf("%lld\n",dp[1][n]);	
	return 0;
}

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页