zoukankan      html  css  js  c++  java
  • uva11258 String Partition(DP)

    dp[x]表示1-x的划分最大和,最多从前面10个位置转移过来

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <string>
    #include <sstream>
    #define ll long long
    #define MAX_INT 2147483647
    using namespace std;
    int n,l;
    string s;
    ll dp[210],num[210][210];
    ll DP(int x){
        if(x<=9&&num[0][x]<=MAX_INT) return num[0][x];
        if(dp[x]!=-1) return dp[x];
        ll ret=0;
        for(int i=x-9;i<=x;i++){
            if(num[i][x]<=MAX_INT) ret=max(ret,DP(i-1)+num[i][x]);
        }
        return dp[x]=ret;
    }
    int main(){
        //freopen("11258","r",stdin);
        scanf("%d",&n);
        getchar();
        for(int i=0;i<n;i++){
            getline(cin,s);
            memset(dp,0,sizeof dp);
            l=s.length();
            for(int i=0;i<l;i++){
                for(int j=i;j<l;j++){
                    num[i][j]=s[j]-'0';
                    for(int k=i+1;k<=j;k++){
                        num[i][k]=num[i][k-1]*10+s[k]-'0';
                    }
                }
            }
            for(int i=0;i<9;i++) dp[i]=num[0][i];
            for(int i=9;i<l;i++){
                for(int j=i-9;j<=i;j++){
                    if(num[j][i]<=MAX_INT) dp[i]=max(dp[i],dp[j-1]+num[j][i]);
                }
            }
            printf("%lld
    ",dp[l-1]);
        }
        return 0;
    }
    uva11258
  • 相关阅读:
    WebServices Get
    字符出现次数
    正则
    防止AutoPost
    转双问号,单问号
    GetData
    UpdatePanel
    字居中
    C# 面向对象之多态
    C# 委托之把委托从委托链(多播委托)移除
  • 原文地址:https://www.cnblogs.com/wonderzy/p/3540707.html
Copyright © 2011-2022 走看看