Sicily 1345:能量项链(dp)
Posted Vincent_Bryan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sicily 1345:能量项链(dp)相关的知识,希望对你有一定的参考价值。
#include <bits/stdc++.h> using namespace std; int main(){ int n; while(cin >> n){ int arr[n]; for(int i = 0; i < n; i++)cin >> arr[i]; int dp[n][n+1]; //使用dp[i][j]代表从第i个数字往后合并j位的最大能量 memset(dp, 0, sizeof(dp)); for(int i = 0; i < n; i++){ dp[i][2] = arr[i]*arr[(i+1)%n]*arr[(i+2)%n]; } //dp[i][0] = dp[i][1] = 0, dp[i][2]为连续三数字相乘 for(int j = 3; j <= n; j++){ for(int i = 0; i < n; i++){ int ans = 0; for(int k = 1; k < j; k++){ ans = max(ans, dp[i][k]+dp[(i+k)%n][j-k]+arr[i]*arr[(i+k)%n]*arr[(i+j)%n]); } // 状态转移 dp[i][j] = ans; } } int ans = 0; for(int i = 0; i < n; i++){ ans = max(ans, dp[i][n]); // 遍历得出最大值 } cout << ans << endl; } }
以上是关于Sicily 1345:能量项链(dp)的主要内容,如果未能解决你的问题,请参考以下文章