删数问题

转载 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 删数问题

**删数问题**

**删数问题** Time Limit: 1000MS Memory Limit: 65536KB Problem Description 键盘输入一个高精度的正整数n(≤100位),去掉其中任...

8605删数问题

  • 2013-01-27 21:26
  • 20KB
  • 下载

删数问题 (sdut oj)

删数问题 Time Limit: 1000MS Memory Limit: 65536KB Problem Description  键盘输入一个高精度的正整...

1298 删数问题

描述给出一个N位正整数(首位不为0),去掉其中S个数字后剩下的数字按左右次序组成一个新的N-S位正整数(首位不能为0)。对给定的N和S,寻找一种删数规则使得剩下得数字组成的新数最小。输入第一行一个正整...

8605 删数问题

8605 删数问题 时间限制:1000MS  内存限制:1000K 题型: 编程题   语言: 无限制 Description 问题描述:  给定n位正整数a,去掉其中任意k个数字...

删数问题

删数问题键盘输入一个高精度的正整数n(<=240位),去掉任意s个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的n和s,寻找一种方案,使得剩下的数最小。 Simple Input ...

删数问题

删数问题 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Submis...

继续贪心:删数问题

上次已经讲过一次贪心了,这次就来个小实战吧,下面看题: **删数问题**已知一个数组,要求从数组中删除n个数,要求剩下的数按顺序排列成的数字最小。例:数组为{1,3,2,4,7,0,5} n = ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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