题目描述:

样例:

实现解释:

和字符串处理结合的动态规划,个人认为比较难分析出状态转移方程,虽然懂了之后挺好理解的

知识点:

动态规划,字符串转数字

题目分析:

首先按照最基础:依据题意设计原始dp数组,这里根据描可知有三个数需要考虑:数字串开始,数字串结尾和之间插入的乘号数量,因此基础dp[i][j][k],分别为开始,结束脚标和乘号数。

然后推导:考虑到添加乘号,为了使状态转移方程简单,最后固定位置,因此可以考虑每次都在最后插入乘号,插入乘号的位置便可倒序确定。此时数字串的开始位置便可固定为0(因为添加乘号都在最后添加,因此可以不必考虑开始),则有dp[i][j],分别为结束脚标和乘号数量。

得出状态转移方程:乘号在最后插入,插入之间有j-1个乘号,前面有i+1个数字,因此插入乘号的位置可从j+1一直到i-1脚标的数字后(保证能放下j个乘号),则需要比较的就是dp[i][j]和dp[i-k][j-1]*getNum(i-k+1,i);k为插入乘号后最后一个数字的位数(根据脚标范围而定),前者即插入乘号前面的最大值,后者即乘号后面的值,循环找最大既是dp[i][j]的最大值。

注:初始化需要对插入0个乘号时dp[i][0]进行特殊处理,其他均为0

难点:

状态转移方程的实现,状态转移时数字字符串脚标的确定

完整代码:

#include<iostream>
#include<cstring>
#include<sstream>
using namespace std;
long long dp[][];
string num;
long long getNum(int i,int j)
{
string temp = num.substr(i,j-i+);
//基于开始脚标和长度截取字符串
stringstream ss;
long long strnum;//由于最大18位,因此可以直接转化
ss << temp;//传入流
ss >> strnum;//流导出自动转化数字
return strnum;
}
int main()
{
ios::sync_with_stdio(false);
int n,length,minc,maxl;
long long now;
while(cin >> n)
{
cin >> num;
length = num.length();
memset(dp,,sizeof(dp));
//0个乘号时赋初值,这里用dp[i-1][0]*10+num[i]-'0'的方法更快些
for(int i = ;i<length;i++) dp[i][] = getNum(,i);
//0的已经处理,从1开始
for(int i = ;i<length;i++)//当前到达的字符串脚标为i
{
minc = min(n,i);//最多可放的乘号数
for(int j = ;j<=minc;j++)//0~i中插入j个乘号
{
maxl = i-j+;//插入的极限位置界定,依据i>=k+j-1得出
for(int k = ;k<=maxl;k++)//k为插入称号后最后一个数字的位数
{
//乘号的插入位置为即i-k脚标的数字后
//因此获取数字时i-k+1即最后数字的开始脚标
now = dp[i-k][j-]*getNum(i-k+,i);//加快计算
if(now > dp[i][j])
{
dp[i][j] = now;
}
}
}
}
cout << dp[num.length()-][n] << '\n';
}
return ;
}

题解:2018级算法第四次上机 C4-最小乘法的更多相关文章

  1. 题解:2018级算法第四次上机 C4-商人卖鱼

    题目描述: 样例: 实现解释: 需要简单分析的贪心题 知识点: 贪心,自定义排序,提前存储 题目分析: 卖鱼,鱼卖出去需要时间,鱼没被卖出去之前需要吃饲料 则有,如果卖a鱼的话b鱼会吃饲料c份,而卖b ...

  2. 题解:2018级算法第五次上机 C5-图2

    题目描述: 样例: 实现解释: 所有结点对最短路径的板子题 知识点: 寻找所有结点对最短路径,动态规划 坑点: 无坑,注意建边即可 使用的算法为floyd算法 按照程序顺序解释如下: 首先建图,以邻接 ...

  3. 题解:2018级算法第六次上机 C6-不Nan的过河

    题目描述: 样例: 实现解释: 一道因为没排序做了一个小时没做出来的二分答案模板题(手动呲牙) 知识点: 二分答案,最大值最小化 坑点: 排序,judge(mid)函数内计数的实现 其实从最长一步的最 ...

  4. 题解:2018级算法第六次上机 C6-危机合约

    题目描述 样例: 实现解释: 没想到你也是个刀客塔之二维DP 知识点: 动态规划,多条流水线调度?可以看做一种流水线调度 坑点: 输入内容的调整(*的特殊判定),开头结尾的调整策略 从题意可知,要做的 ...

  5. 题解:2018级算法第三次上机 C3-Zexal的浩瀚星辰

    题目描述: 样例: 实现解释: 一道结合了火箭发射的贪心题目 知识点: 贪心,优先队列 题目分析: 根据题目描述可知,延迟后时间是正常推进的,也就是假设共有n个火箭,推迟k小时.则在到达k+1小时时, ...

  6. 2016级算法第四次上机-E.Bamboo and the Ancient Spell

    Bamboo and the Ancient Spell 分析 可能英文读题难度比较大,但是只要看到全大写的 "THE LONGEST COMMON SUBSEQUENCE !"应 ...

  7. 2016级算法第四次上机-F.AlvinZH的最“长”公共子序列

    940 AlvinZH的最"长"公共子序列 思路 DP,难题. \(dp[i][j]\) :记录A的前i个字符与B的前j个字符变成相同需要的最小操作数. 初始化:dp[i][0] ...

  8. 2016级算法第四次上机-D.AlvinZH的1021实验plus

    978 AlvinZH的1021实验plus 思路 贪心,中等题. 使用miss变量表示未覆盖的最小数字,初始值为1. 初始覆盖区间为[1,miss),目标是覆盖[1,m],即miss需要大于m. 需 ...

  9. 2016级算法第四次上机-C.AlvinZH的1021实验

    975 AlvinZH的1021实验 思路 贪心,简单题. 题目已经说明有且只有一种方法表示所求数,简单列举几项可以发现只由前i个砝码会可以表示[1,∑Wi]的所有数的.先找到最大需要的砝码Wi,问题 ...

随机推荐

  1. IDEA自定义模板

    RT,虽然看起来简单,每当配置新的IDEA 时,又不免度娘,所以整理下 1.类的模板 路径: settings-Editor-File and Code Templates 右侧找到 class 添加 ...

  2. String Problem(模板)【最短路】

    String Problem 题目链接(点击) Boy Valera likes strings. And even more he likes them, when they are identic ...

  3. CKAD个人考试心得

    先晒一波本人的CKA和CKAD证书! 如下正式分享CKAD心得: 考试相关准备: l 练习:https://github.com/dgkanatsios/CKAD-exercises: l 网络:必须 ...

  4. TCP和UDP的Socket编程实验

    Linux Socket 函数库是从 Berkeley 大学开发的 BSD UNIX 系统中移植过来的.BSD Socket 接口是在众多 Unix 系统中被广泛支持的 TCP/IP 通信接口,Lin ...

  5. css3动画特效代码

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. 阿里P7终于讲完了JDK+Spring+mybatis+Dubbo+SpringMvc+Netty源码

    前言 这里普及一下,每个公司都有职别定级系统,阿里也是,技术岗以 P 定级,一般校招 P5, 社招 P6 起.其实阅读源码也是有很多诀窍的,这里分享几点心得: 首先要会用.你要知道这个库是干什么的,掌 ...

  7. cc40a_demo_Cpp_智能指针c++_txwtech

    //40_21days_Cpp_智能指针c++_cc40a_demo.cpp_txwtech //智能指针.auto_ptr类//*常规指针-容易产生内存泄漏,内存被占满,程序就死机,或者系统死机// ...

  8. vc++,MfC ,cstring与char相互转换知识

    //mapName = mapString;//----------------------原始- string mapName; CString strtemp,strtemp2; //char t ...

  9. WeChair项目Alpha冲刺(8/10)

    团队项目进行情况 1.昨日进展    Alpha冲刺第八天 昨日进展: 前端:安排页面美化,设计实名认证 后端:用户信息通过dao层存储数据库 数据库:修改数据表属性,与后端部署数据库交互 2.今日安 ...

  10. 【asp.net core 系列】- 11 Service层的实现样板

    0.前言 在<asp.net core 系列>之实战系列中,我们在之前的篇幅中对项目有了一个大概的认知,也搭建了一个基础的项目骨架.那么就让我们继续完善这个骨架,让它更加丰满.这一篇,我将 ...