zoukankan      html  css  js  c++  java
  • P1063 能量项链

    题目链接

    Code:

     1 #include <bits/stdc++.h>
     2 # define LL long long
     3 using namespace std;
     4 
     5 const int maxn=100+10;
     6 int N;
     7 int val[maxn];
     8 int dp[maxn][maxn];
     9 
    10 int pre(int i){
    11     return i==1?N:i-1;
    12 }
    13 
    14 int next(int i){
    15     return i==N?1:i+1;
    16 }
    17 
    18 int dfs(int left, int right){
    19     if(dp[left][right]!=-1) return dp[left][right];
    20 
    21     int res=0;
    22     for(int i=left;i!=right;i=next(i)){
    23         int tmp=val[left]*val[next(i)]*val[next(right)]+dfs(left,i)+dfs(next(i),right);
    24         res=max(res,tmp);
    25     }
    26     return dp[left][right]=res;
    27 }
    28 
    29 int main(){
    30     memset(dp,-1,sizeof(dp));
    31     scanf("%d", &N);
    32     for(int i=1;i<=N;++i){
    33         scanf("%d", val+i);
    34     }
    35     int res=0;
    36     for(int i=1;i<=N;++i){
    37         res=max(res,dfs(i,pre(i)));
    38     }
    39     printf("%d", res);
    40 }

    bottom-up:

    int e[250];
    int dp[250][250];
    int main(){
        int N;
        cin>>N;
        for(int i=1;i<=N;i++){
            scanf("%d", e+i);
            e[i+N]=e[i];
        }
        int res=0;
        for(int len=2;len<=N;len++){
            for(int i=1;len+i-1<2*N;i++){
                int j=len+i-1;
                for(int k=i;k<j;k++){
                    dp[i][j]=max(dp[i][j], e[i]*e[k+1]*e[j+1]+dp[i][k]+dp[k+1][j]);
                }
            }
        }
        for(int i=1;i<=N;i++){
            res=max(res,dp[i][i+N-1]);
        }
        printf("%d", res);
       return 0;
    }
  • 相关阅读:
    MySQL基础
    DNS域名解析服务
    仿Mars MP3播放器项目5
    仿Mars MP3播放器项目4
    仿Mars MP3播放器项目3
    仿Mars MP3播放器项目2
    仿Mars MP3播放器项目1
    JAVA 随记1
    Redis和Memcache的区别
    php用smtp发送邮件
  • 原文地址:https://www.cnblogs.com/FEIIEF/p/12248576.html
Copyright © 2011-2022 走看看