• hlg_oj_1212_乘积最大


    这道题是一道DP题,

    解题思路:  NUM[i][j]表示在数字中从i到j位组成的数。

           dp[i][j]  表示前i位数字分成j段的最大乘积。

                状态转移方程 if(j==1) dp[i][j]=NUM[1][i];

                             if(j>=1&&j<=i)  dp[i][j]=max{ dp[d,j-1]*NUM[d+1][i] }其中 1<=d<i

                else if(i<j) dp[i][j]=0;

    -----------------------------------------------------------------------------------

     1 #include <iostream>
     2 #include <cmath>
     3 #include <cstring>
     4 #include <string>
     5 using namespace std;
     6 int num[50+5];
     7 int NUM[50+5][50+5];
     8 int dp[50+5][50+5];
     9 int change(int i,int j)
    10 {
    11     int res=0;
    12     int I;
    13     for(I=i;I<=j;++I)
    14     {
    15         res*=10;
    16         res+=num[I];
    17     }
    18     return res;
    19 }
    20 int main()
    21 {
    22     string abc;
    23     int i,j,d;
    24     int n,k;
    25     while(cin>>n>>k)
    26     {
    27         cin>>abc;
    28         memset(dp,0,sizeof(dp));
    29         for(i=0;i<n;++i)  //字符串转换为数组
    30         {
    31             num[i+1]=abc[i]-'0';
    32         }
    33         for(i=1;i<=n;++i)
    34             for(j=i;j<=n;++j)
    35             {
    36                 NUM[i][j]=change(i,j);
    37             };
    38         for(i=1;i<=n;++i)
    39             dp[i][1]=NUM[1][i];
    40         for(i=1;i<=n;++i)
    41         {
    42             for(j=2;j<=k+1;++j)
    43             {
    44                 
    45                 if(j>1&&j<=i)
    46                 {
    47                    for(d=1;d<i;++d)
    48                    {
    49                     dp[i][j]=max(dp[i][j],dp[d][j-1]*NUM[d+1][i]);
    50                    }
    51                 }
    52                 else if(i<j) dp[i][j]=0;
    53             }
    54         }
    55         cout<<dp[n][k+1]<<endl;
    56     }
    57     return 0;
    58 }
  • 相关阅读:
    Smarty简介
    简易调用及实例化视图
    简易调用及实例化模型
    简易调用及实例化控制器
    MVC错误(一)
    单一入口及MVC目录规范
    MVC各个层的作用
    MVC工作流程
    【学习笔记】字符串—马拉车(Manacher)
    【题解】邻值查找 [CH1301]
  • 原文地址:https://www.cnblogs.com/symons1992/p/2778422.html
Copyright © 2020-2023  润新知