首页 > 其他 > 详细

蓝桥杯 ALGO-17 乘积最大

时间:2020-04-18 22:53:40      阅读:74      评论:0      收藏:0      [点我收藏+]
#include <iostream>
#include <algorithm>
using namespace std;
/*********全局变量*********/
unsigned long long int dp[7][42]={0};
char number[42]={0};
int N,K;
int A[42]={0};
/*********转换函数*********/
unsigned long long int transform(int i,int j){  //输出i到j位的数
    long long int transformation=0;
    for(;i<=j;++i){
        transformation=transformation*10+A[i];
    }
    return transformation;
}
/*********动态规划*********/
void DP(void){
    unsigned long long int temp=0;
    for(int i=1;i<=K;++i){
        for(int j=1;j<=N;++j){
            temp=0;
            for(int k=i;k<j;++k){
                temp=max(temp,dp[i-1][k]*transform(k+1,j));  //状态转移方程
            }
            dp[i][j]=temp;
        }
    }
}
/*********主函数*********/
int main()
{
    cin>>N>>K;
    cin>>number;
    for(int i=0,j=1;i<N;++i,++j){  
        A[j]=number[i]-0;
        dp[0][j]=dp[0][j-1]*10+A[j]; //为状态转移方程中的dp[i-1][k]做准备
    }
    DP();
    cout<<dp[K][N];
    return 0;
}

 

蓝桥杯 ALGO-17 乘积最大

原文:https://www.cnblogs.com/futu-/p/12306372.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!