题目: 对于一个n位正整数a,去掉其中任意k(k<=n)个数字后,剩下的数字按原次序排列可以组成一个新的正整数。设计一个删数算法,使得剩下的数字组成的正整数最小。例如,a=13243221,k=5,输出:121 分析: 遇到这个题目,我们可以首先把问题简单化,考虑k=1的情况,在上面的例子中,直观上应该删去3,得到1243221,继续考虑k=1的情况,应该继续删去4,得到123221。我们之前删去的3和4共同具有的特点:都是第一个递减序列的首个数字。再考虑如果数字串中没有递减序列,如a=123,k=1的情况,应该删掉最后一个字符3,得到最小正整数12。因此,这个题目我们只需要不断的删除首个递减序列的首个数字,如果没有递减序列则删去最后一个字符。 代码如下: http://dzgzchina.com/forum.php?mod=viewthread&tid=94 |
最小数字
最新推荐文章于 2021-01-27 23:31:24 发布