Delete Numbers(0700)

该博客讨论了一种算法问题,即如何从一个n位正整数中删除k个数字以形成新的最小正整数。博主分享了错误的从大到小删除数字的方法,并解释了为什么这个方法不适用,提出了按顺序比较并删除较大数字的正确策略。通过举例说明了为何不能简单地从前到后删除数字,而是要确保删除的数字不是当前最小的。
摘要由CSDN通过智能技术生成

原题目连接点此处

给定n 位正整数a,去掉其中任意k≤n 个数字后,剩下的数字按原次序排列组成一个新的正整数。对于给定的n位正整数a(n<100) 和正整数k,设计一个算法找出剩下数字组成的新数最小的删数方案。 对于给定的正整数a,编程计算删去k个数字后得到的最小数。

Description
第1 行是1 个正整数a。第2 行是正整数k。

Input
计算出的最小数(输出无前导0)

Output
178543
Sample Input
13
Sample Output
Hint
mryang
题目数据小,直接暴力就可以。
一开始想的太简单了。直接按最大的数开始删,直到删除前k大的数。提交一发,WA。各种数据测试,正常。最后才发现按那样的思路 506 1 就过不了
它会先删除6,得到50,显然先删除5得到06,6要比50小;所以。。。。这就是坑。。。。。
那就不按从大到小,按从前到后,反正只要删除的不是当前最小就好。
假设有这么一组数据xyzzzz;开始比较x,y如果x比y大,那么yzzzz < xzzzz所以删掉x;如果x < y;就一定删掉y吗?不一定。假如y < z;删掉y就是xzzzz,那xzzzz和xyzzz比,前面x一样百位y < z所以不应该删掉y;而应该删掉z;
综上,只要前面一个数大于后面一个,就

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值