最佳乘法问题
来源:互联网 发布:企业it解决方案 编辑:程序博客网 时间:2024/06/08 15:32
题目描述
给一个长度为 n的数字串,只包含数字0-9,现在让你在这个串中间插入 k 个乘号,
将数字串分为k+1 个部分,使得这k+1个数字的乘积最大。
输入
字符串 k
输出
乘法结果
示例
312 1
62
解题思路
p【m】【n】表示前m个字符中插入n个乘号的最大值,p【m+1】【n】=max{p【i】【n】+num(i+1,n)},相当于在i和i+1之间插入了一个乘号
#include<iostream>#include<string>#include<stdlib.h>using namespace std;typedef long long int LL;const LL INF=-100000;int main() { string s; cin>>s; int k; cin>>k; LL p[s.length()+1][k+1]={0}; for (int i=1;i<=s.length();++i) { p[i][0]=atoi(s.substr(0,i).c_str()); } for (int m=1;m<=s.length();++m) { for (int n=1;n<=k;++n) { cout<<"m="<<m<<"n="<<n<<" "<<p[m][n]<<endl; if (n>m-1) p[m][n]=INF; else{ for (int i=n;i<=m-1;++i){ if (p[m][n]<p[i][n-1]+atoi(s.substr(i,m-1).c_str())) { p[m][n]=p[i][n-1]+atoi(s.substr(i,m-1).c_str()); } } cout<<"m="<<m<<"n="<<n<<" "<<p[m][n]<<endl; } } } cout<<p[s.length()][k]<<endl;}
阅读全文
0 0
- 最佳乘法问题
- 动态规划--寻找最佳矩阵乘法次序
- 矩阵的乘法问题
- 乘法表问题
- 【dp】乘法表问题
- 王晓东 乘法表问题
- 王晓东 乘法表问题
- 乘法表问题
- 矩阵的乘法问题
- 大数乘法问题
- 乘法问题(动态规划)
- 乘法表问题
- 大整数乘法问题
- 乘法表问题
- 乘法表问题
- BigDecimal 乘法问题
- 大整数乘法问题
- 高精度正整数乘法问题
- oj2335——0-1背包问题
- 算法提高 数字黑洞
- 使用DPM训练自己的模型
- Js高级函数式编程
- oracle时间函数(二),trunc()
- 最佳乘法问题
- android实现倒计时,最简单实现RecyclerView倒计时+SwipeRefreshLayout下拉刷新
- Spring异常默认映射HTTP状态码
- 约束优化方法之拉格朗日乘子法与KKT条件
- 如何替换RatingBar评分控件图片
- u3d物体跟随摄像头旋转角度
- JavaScript学习笔记-基本语法
- POJ 1220 NUMBER BASE CONVERSION 笔记
- 基于DragonBoard 410c的智能门铃系列三之系统功能分析