lintcode - 删除数字
class Solution {
public:
/*
* @param A: A positive integer which has N digits, A is a string
* @param l: Remove k digits
* @return: A string
*/
string dp[][];
string inf;
string DeleteDigits(string &A, int l) {
// write your code here
if(A.size() == ) return "";
if(l == ) return A;
int len = A.length() - l;
for(int i = ; i < A.size(); ++i){
dp[i][] = "";
inf = inf + "";
}
for(int i = ; i < A.size(); ++i){
for(int j = ; j < A.size(); ++j){
dp[i][j] = inf;
}
}
vector<string> vec;
for(int i = ; i < A.length(); ++i){
stringstream ss;
ss << (A[i] - '');
vec.push_back(ss.str());
}
dp[][] = A.substr(,);
for(int i = ; i < vec.size(); ++i){
for(int k = ; k <= i + && k <= len; ++k){
for(int j = ; j < i; ++j){
if(k <= j + )
dp[i][k] = min(dp[j][k - ] + vec[i], min(dp[i][k], dp[j][k]));
else dp[i][k] = min(dp[j][k - ] + vec[i], dp[i][k]);
if(k == ) dp[i][k] = min(dp[i][k], vec[i]);
}
// cout << dp[2][1] << endl;
}
}
int len1 = dp[vec.size() - ][len].length();
for(int i = ; i < len1; ++i){
if(dp[vec.size() - ][len][i] != ''){
dp[vec.size() - ][len] = dp[vec.size() - ][len].substr(i,len1-i);
break;
}
}
return dp[vec.size() - ][len];
}
};
dp[i][j]代表以i结尾,长度为j的最小的字串 因为这个数字会很长 所以不能用数字来dp,必须用字符串来dp 注意一下因为是字符串 所以要去掉前导零
lintcode - 删除数字的更多相关文章
- T2988 删除数字【状压Dp+前缀和优化】
Online Judge:从Topcoder搬过来,具体哪一题不清楚 Label:状压Dp+前缀和优化 题目描述 给定两个数A和N,形成一个长度为N+1的序列,(A,A+1,A+2,...,A+N-1 ...
- lintcode:数字组合III
数字组合III 组给出两个整数n和k,返回从1......n中选出的k个数的组合. 您在真实的面试中是否遇到过这个题? Yes 样例 例如 n = 4 且 k = 2 返回的解为: [[2,4],[3 ...
- lintcode:数字组合 II
数字组合 II 给出一组候选数字(C)和目标数字(T),找出C中所有的组合,使组合中数字的和为T.C中每个数字在每个组合中只能使用一次. 注意事项 所有的数字(包括目标数字)均为正整数. 元素组合(a ...
- lintcode:数字组合I
数字组合I 给出一组候选数字(C)和目标数字(T),找到C中所有的组合,使找出的数字和为T.C中的数字可以无限制重复被选取. 例如,给出候选数组[2,3,6,7]和目标数字7,所求的解为: [7], ...
- react之redux增加删除数字
比如在页面中添加和删除‘222’ action.js export const ADD= 'ADD'; export const RED='RED'; export const add=(str)=& ...
- LintCode 删除排序链表中的重复元素
给定一个排序链表,删除所有重复的元素每个元素只留下一个. 样例 给出 1->1->2->null,返回 1->2->null 给出 1->1->2->3 ...
- COJ 删除数字
试题描述 输入正整数N和M,在N中删除掉M位,能留下的最大整数是多少? 输入 正整数N和M 输出 留下的最大整数 输入示例 233390323 5 输出示例 9323 其他说明 1<=N< ...
- [LintCode]删除链表中的元素
问题分析: 声明当前指针和上一个指针即可. 问题求解: public class Solution { public ListNode removeElements(ListNode head, in ...
- [LintCode] 删除链表中倒数第n个节点
/** * Definition of ListNode * class ListNode { * public: * int val; * ListNode *next; * ListNode(in ...
随机推荐
- .Net时间运算 - DateTime类,TimeSpan类
DateTime类是.Net中用于处理时间类型数据的. 一.字段 MaxValue 表示 DateTime 的最大可能值.此字段为只读. MinValue 表示 DateTime 的最小可能值 ...
- 前端页面给指定的div添加遮罩层,并且带有加载中的小旋转图片
话不多说,先上代码,其实还是比较简单的 $("<div id='shade' style='opacity:0.85;background:white'></div> ...
- Angular问题01 创建组件时报错、HammerJS找不到
1 利用ng创建组件时出现错误 1.1 ng g c test/testHome 1.2 问题描述 当angular应用中有多个module.ts文件时,创建组件时会出现冲突,因为有多个module. ...
- parseXXX的用法
转换字符串. parseXXX是Integer类.等基本数据类型包装类的方法,用于实现String和int型数据的转换.例如, Integer.getInteger(String s) 从字符串中获取 ...
- Luogu 4139 上帝与集合的正确用法
扩展欧拉定理:$a^{b} \equiv a^{b Mod \varphi (p) + \varphi (p)} (Mod p) $ $(b \geq \varphi (p))$ . 这道题 ...
- 7.qfilesystemmodel rowcount 为什么为0? 一个简单的model类的例子
任务: 1.新建一个空的mainwindow项目 2.debug下编译得到一个文件夹,应用程序输出这个文件夹中的文件(不显示文件夹中的文件夹) 3.使用QFileSystemModel完成. 本例显示 ...
- rest-framework组件 之 解析器
解析器 request类 django的request类和rest-framework的request类的源码解析 局部视图 from rest_framework.parsers import JS ...
- 操作系统 Linux ex1 note
ctrl + alt + T 命令行 ctrl + alt + F7 ctrl + alt + F1-6 ls 列出所有文件 / 根目录 ~ /home/username cd 切换路径 . 当前目录 ...
- 开发一个属于自己的第一个Composer/Packagist包
Composer 给我们带来了诸多的好处: 模块化,降低代码重用成本 统一的第三方代码组织方式 更科学的版本更新 初始化项目,生成composer.json文件 初始实例项目代码目录结构: 现在要在项 ...
- C#.Net使用正则表达式抓取百度百家文章列表
工作之余,学习了一下正则表达式,鉴于实践是检验真理的唯一标准,于是便写了一个利用正则表达式抓取百度百家文章的例子,具体过程请看下面源码: 一:获取百度百家网页内容 public List<str ...