nyoj746 http://acm.nyist.net/JudgeOnline/problem.php?pid=746

一道区间dp的题目:

设:a[i][j]为那一串数字中从第i位到第j位的数是多少

f[i][j]为从第一位到第i位分成j段的最大乘积,则有:

f[i][j]=max(f[u][j-1]*a[u+1][i])  (u=1toi-1)  u表示分割点

把1~u分成j-1份,其最大乘积就是f[u][j-1],再把剩下的u+1~i的数(a[u+1][i])作为最后一份,两者相乘便可以求出f[i][j].

边界:f[1~n][1]=a[1][1~n]

注意把j放在最外层循环。

代码:

//f[i][j]=max(f[u][j-1]*a[u+1][i])  (u=1toi-1)
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<stack>
#define Size 25
using namespace std; long long T;
long long f[Size][Size];
long long a[Size][Size];
char c[Size];
int n,m; int ctoi(char c){
return c-'';
} int stoi(int i,int j){
int num=;
for(int k=j;k>=i;k--){
num+=ctoi(c[k])*pow(,j-k);
}
return num;
} int main(){
cin>>T; while(T--){
//初始化
memset(f,,sizeof(f));
memset(a,,sizeof(a)); //输入
cin>>c+>>m;
n=strlen(c+); //初始化a数组
for(int i=;i<=n;i++){
for(int j=i;j<=n;j++){
a[i][j]=stoi(i,j);
//cout<<a[i][j]<<' ';
}
//cout<<endl;
} //边界条件
for(int i=;i<=n;i++)f[i][]=a[][i];
//DP求解
for(int j=;j<=m;j++){
for(int i=j;i<=n;i++){
for(int u=;u<i;u++){
if(f[u][j-]*a[u+][i] > f[i][j]){
f[i][j] = f[u][j-]*a[u+][i];
}
}
}
} //输出最大乘积
cout<<f[n][m]<<endl;
} return ;
}

nyoj746 整数划分的更多相关文章

  1. nyoj746 整数划分(四)

    整数划分(四) 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 暑假来了,hrdv 又要留学校在参加ACM集训了,集训的生活非常Happy(ps:你懂得),可是他最近遇到 ...

  2. NYOJ746——整数划分(四)

    描述 暑假来了,hrdv 又要留学校在参加ACM集训了,集训的生活非常Happy(ps:你懂得),可是他最近遇到了一个难题,让他百思不得其解,他非常郁闷..亲爱的你能帮帮他吗? 问题是我们经常见到的整 ...

  3. 51nod p1201 整数划分

    1201 整数划分 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 将N分为若干个不同整数的和,有多少种不同的划分方式,例如:n = 6,{6} {1,5} {2, ...

  4. 2014北大研究生推免机试(校内)-复杂的整数划分(DP进阶)

    这是一道典型的整数划分题目,适合正在研究动态规划的同学练练手,但是和上一个随笔一样,我是在Coursera中评测通过的,没有找到适合的OJ有这一道题(找到的ACMer拜托告诉一声~),这道题考察得较全 ...

  5. 整数划分 (区间DP)

    整数划分(四) 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 暑假来了,hrdv 又要留学校在参加ACM集训了,集训的生活非常Happy(ps:你懂得),可是他最近 ...

  6. nyoj 90 整数划分

    点击打开链接 整数划分 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 将正整数n表示成一系列正整数之和:n=n1+n2+-+nk,  其中n1≥n2≥-≥nk≥1,k≥ ...

  7. 整数划分 Integer Partition(二)

    本文是整数划分的第二节,主要介绍整数划分的一些性质. 一 先来弥补一下上一篇文章的遗留问题:要求我们所取的 (n=m1+m2+...+mi )中  m1 m2 ... mi连续,比如5=1+4就不符合 ...

  8. 整数划分 Integer Partition(一)

    话说今天百度面试,可能是由于我表现的不太好,面试官显得有点不耐烦,说话的语气也很具有嘲讽的意思,搞得我有点不爽.Whatever,面试中有问到整数划分问题,回答这个问题过程中被面试官搞的不胜其烦,最后 ...

  9. 51nod1201 整数划分

    01背包显然超时.然后就是一道神dp了.dp[i][j]表示j个数组成i的方案数.O(nsqrt(n)) #include<cstdio> #include<cstring> ...

随机推荐

  1. shell常用测试命令

    预定义变量: 预定义变量是由Bash程序预先定义好的一类特殊变量,用户只能使用预定义变量,而不能创建新的预定义变量,也不能直接为预定义变量赋值.预定义比变量使用"$"符合和另一个符 ...

  2. golang的interface到其他类型的数据转换

    以string为例 package main import "fmt" func main() { var a interface{} var b string a = " ...

  3. kubernetes 学习 service相关

    1:         service有什么用? 直接通过Pod的IP地址和端口号可以访问容器应用,但是pod的IP地址是不可靠的,比如POD出现故障后,有可能在另外一个NOde上启动,这样Pod的IP ...

  4. 浅谈PHP面向对象编程(七、抽象类与接口)

    7.0 抽象类与接口 当定义一个类时,常常需要定义一些方法来描述该类的行为特征.但有时这些方法的实现方式是无法确定的,此时就可以使用抽象类和接口. 抽象类和接口用于提高程序的灵活性.抽象类是一种特殊的 ...

  5. Druid.io系列(二):基本概念与架构

    原文链接:  https://blog.csdn.net/njpjsoftdev/article/details/52955788 在介绍Druid架构之前,我们先结合有关OLAP的基本原理来理解Dr ...

  6. Web端优秀图表控件

    百度echart http://echarts.coding.io/doc/example.html C#+JQuery+.Ashx+百度Echarts 实现全国省市地图和饼状图动态数据图形报表的统计 ...

  7. ascii码与二进制码有何区别?

    ascii编码和二进制码是两个概念.ASCII主要是为了电脑显示和传输拉丁字母而发明的一套编码,二进制则是为了计算机方便计算.传输数据而使用的一种方法.ASCII(American Standard ...

  8. linux下mysql的root密码忘记----解决方案

    1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库.           因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的     状态下 ...

  9. GeoServer之styles定制

    GeoServer之styles定制 GeoServer中styles类似于css,将地图中的点线面画出一层皮肤,引用在图层上.不同的地方在于.GeoServer中的styles用的是sld语法,也就 ...

  10. ListBox绑定一个对象

    转自原文 C#中ListBox的Items属性是Object对象,如何显示该对象的别名 而真正的则保存在其他的地方 一般是datasource 绑定一个list对象 list 可以是 自定义类型的对象 ...