删除算法
对于一个给定的数字(可能会很大),从中删除一定量的数字,使得余下的数字按原次序组成的数最大。我们保证原数的位数不超过50,删除数字的个数小于原数的位数。对于这个有什么想法呢?聪明的你快来解答吧!
Input:
输入为一组数据,第一行为输入的数字n,位数不超过50 (1 < lenth < 51);
第二行为删除数字的个数m(0 < m< lenth);
Output:
输出余下的数字按原次序组成的最大数
such as:
Input
785452362215
5//删除5个数
Output:
8562215答案回复可见{:5_109:}
**** Hidden Message *****
表示有点不明白!!! 这是什么.. xii123 发表于 2013-1-14 11:50 static/image/common/back.gif
表示有点不明白!!!
这个题是用贪心的思想,前面每两个数进行比较删去较小项 法规及太突然 表示有点不明白 哦哦哦。。 表示没怎么看明白,不知道隐藏的是什么 看不懂啊。。。。。。。。。。 这是我写的递归算法(个人觉得像贪心),不知道对不对……楼主给看看呗?
#include <iostream>
using namespace std;
void d(char* a, int n)
{
if (n == 0)
{
return;
}
int max = '0';
int index = 0;
for (int i = 0; i <= n; i ++)
{
if (a > max)
{
max = a;
index = i;
}
}
for (int i = 0; i < index; i ++)
{
a = -1;
}
dfs(a+index+1, n-index);
}
int main()
{
int n = 0;
int length = 0;
char a = {0};
cin>>a;
cin>>n;
length = strlen(a);
d(a, n);
for (int i = 0; i < length; i ++)
{
if (a != -1)
{
cout<<a;
}
}
return 0;
} 呃, d打成dfs了……失误 看帖,必须回帖 看看老帖,支持下 答案是什么
页:
[1]