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 ...
随机推荐
- [Python Study Notes]堆叠柱状图绘制
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...
- Bind和Eval的不同用法 (转)
今天在用DataList的模板列的时候习惯性地像在03中那样去给模板列的绑定字段加个处理函数: < asp:Label ID = " Label1 " runat = &qu ...
- ==, equals, hashcode的理解
一.java对象的比较 等号(==): 对比对象实例的内存地址(也即对象实例的ID),来判断是否是同一对象实例:又可以说是判断对象实例是否物理相等: equals(): 对比两个对象实例是否相等. 当 ...
- python的argparse模块
一.简介: argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块.argparse模块的作用是用于解析命令行参数,例如python parseTes ...
- ZROI2018提高day4t2
传送门 分析 我们二分球的直径,然后就像奶酪那道题一样,将所有距离相遇直径的点用并查集连在一起,然后枚举所有与上边的顶距离小于直径的点和所有与下边的距离小于直径的点,如果它们被并查集连在一起则代表这个 ...
- 2 plan team 服务器搭建
最近想搞个2-plan team看看,是不是适合小型团队任务管理 下了个包,解压了,发现里面的readme太简单了 readme中的install相关的内容如下 ### Installation in ...
- 不应该使用Connected属性作为Socket是否连接上的依据
最近在做一个接口,用到了Socket异步通信. 调试了3天了,一直将Socket的Connected属性作为客户端和服务器端是否连接上的依据.今天发现我错了. 下面是从一个csdn博友写的,很好. h ...
- SQLServer存储引擎——02.内存
SQLServer存储引擎之内存篇: (1)SQL SERVER 内存结构 SQL SERVER 内存结构简图 SQL SERVER 内存空间主要可分为两部分: (1.1)可执行代码(E ...
- c++滚动数组
说来惭愧,我老早以前就学习了dp,可直到最近才知道滚动数组. 所以说,滚动数组是什么呢? 它是一种优化dp空间复杂度的思想. 在dp转移时,我们往往不需要之前推的所有的,而是只需要前一两个转移的. 我 ...
- java泛型与object的比较
在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下 ...