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 ;
}

最新文章

  1. ssh base 写法
  2. 一些经典===&gt;&gt;用SQL语句操作数据
  3. 将一个UIView对象的内容保存为UIImage
  4. VS中遇到的奇怪问题
  5. 转载-python学习笔记之输入输出功能读取和写入数据
  6. apache-activemq-5.14.0学习总结
  7. 1.4.2 solr字段类型--(1.4.2.2)solr附带的字段类型
  8. 【HDOJ】【3037】Saving Beans
  9. Codeforces Gym 100114 H. Milestones 离线树状数组
  10. 原生js判断css动画结束 css 动画结束的回调函数
  11. UVA - 11995 I Can Guess the Data Structure!(模拟)
  12. STL中的set使用方法详细!!!!
  13. 单个 LINQ to Entities 查询中的两个结构上不兼容的初始化过程中出现类型“XXXX”
  14. 获取spark-submit --files的文件内容
  15. python 类似java的三目运算符
  16. Link Cut Tree 总结
  17. 【javascript】javascript常用函数大全
  18. XLSReadWriteII5使用示例
  19. 【题解】P5151 HKE与他的小朋友
  20. csharp: using using System.Web.Script.Serialization read json

热门文章

  1. laravel的phpstorm插件laravel-ide-helper
  2. Unix网络编程 3.9 readline函数
  3. Nginx限制服务地址
  4. MySQL 存储引擎、锁、调优、失误与事务回滚、与python交互、orm
  5. vmware12中ubuntu16.10的vmware tools失效,导致不能复制粘贴文字以及自动适应窗口分辨率
  6. canvas之画一条线段
  7. 【POJ】3280 Cheapest Palindrome(区间dp)
  8. 浅谈PHP面向对象编程(九、设计模式)
  9. 广义线性模型(Generalized Linear Models)
  10. 使用JAVA爬取去哪儿网入住信息