[問題]n位整數拿掉m數字得到最大數值

作者: PATRICKSTARS (PatrickStar)   2013-11-13 22:05:10
Given an integer (not necessary a decimal number) with n digits, we want to
remove m (<=n) digits from this number such that the resulting number is as
large as possible. Design an O(n) time algorithm to solve it.
可以提示如何下手嗎?
作者: guest2 (wayne)   2012-01-13 22:10:00
找出第m大的數字,拿掉比他小的錯了remove m digits應該是保留比第m個大的
作者: PATRICKSTARS (PatrickStar)   2012-01-13 22:15:00
這樣有辦法O(n)嗎? 是否可有詳細的解釋QQ
作者: scwg ( )   2012-01-13 22:22:00
一樓的作法對 231, 拿掉一個位數會錯: 23 < 31
作者: CaptainH (Cannon)   2012-01-13 22:53:00
RMQ預處理O(n)+m次O(1)查詢=O(n)
作者: guest2 (wayne)   2012-01-13 23:08:00
謝謝S大提醒。C大可以說的清楚點嗎?
作者: pigalan (Tomato)   2012-01-13 23:34:00
C大的做法應該是每次找從前數m'個第一次出現的最大digit吧這樣的話可以不用RMQ 畢竟O(n)預處理RMQ太刺激了www有個想法~可以從左到右用非嚴格遞減stack,直到pop m個為止
作者: suhorng ( )   2012-01-14 00:13:00
//tioj.redirectme.net:8080/JudgeOnline/showproblem?problem_id=1397 據說是...
作者: pigalan (Tomato)   2012-01-14 15:54:00
慘了原來出過這題=口= 感謝樓上QQ
作者: atoi (atoi)   2012-01-15 11:51:00
UVa的11491-Erasing and Winning 也是這題喔

Links booklink

Contact Us: admin [ a t ] ucptt.com