【第22期】观点:IT 行业加班,到底有没有价值?

删数问题

转载 2015年11月17日 17:40:10

题目:

键盘输入一个高精度的正整数n(<=240位),

掉任意s个数字后剩下的数字按原左右次序将组成一个新的正整数。

编程对给定的n和s,寻找一种方案,使得剩下的数最小。

Simple Input
 178543
 4
Simple Output
 13
 
思路:
每一步总是选择一个使剩下的数最小的数字删除,即按高位到低位的顺序搜索,若各位数字递增,则删除最后一个数字;否则删除第一个递减区间的首字符,这样删一位便形成了一个新的数字串。然后回到串首,按上述规则再删除下一个数字
 
代码:

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<cmath>
#include<iostream>
using namespace std;
#pragma warning(disable:4996)


int main()
{
string s;
int k;
cin >> s >> k;
if (k >= (s.size()))
s.erase();
else
{
while (k>0)
{
int i;
for (i = 0; (i < s.size() && s[i] <= s[i + 1]); i++);
s.erase(i, 1);
k--;
}
}
while ( s.size() >0 && s[0] == '0')  //删除前导0
{
s.erase(0, 1);
}
cout << s << endl;
//system("pause");
return 0;
}

举报

相关文章推荐

删数问题

8605 删数问题 时间限制:1000MS  内存限制:1000K 提交次数:855 通过次数:432 题型: 编程题   语言: 无限制 Description ...

Hibernate常见的面试问题

Hibernate常见的面试问

删数问题

8605 删数问题 时间限制:1000MS 内存限制:1000K 提交次数:0 通过次数:0 语言: not limited 描述 问题描述: 给定n位正整数a,去掉其中任意k个数字后,剩下的...

删数问题问题(贪心) 求测试数据(Wrong)

/*日期:2011-10-20 作者:xiaosi 题目: 删数问题问题(贪心) */ #include&lt;iostream&gt; #include&lt;cstdio&gt; #include&lt;stdlib.h&gt; using namespace std; struct Num { char num; int index; }N[201]; int cmp(const void *a,const void *b) {

贪心法删数问题

【题目】 过键盘输入一个高精度的正整数n(n的有效位数≤240),去掉其中任意s个数字后,剩下的数字按 原左右次序将组成一个新的正整数。编程对给定的n 和s,寻找一种方案,使得剩下的数字组...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)