Redian新闻
>
Delete Digits怎样证明是最优解?
avatar
Delete Digits怎样证明是最优解?# JobHunting - 待字闺中
s*p
1
这道题:
Given string A representative a positive integer which has N digits, remove
any k digits of the number, the remaining digits are arranged according to
the original order to become a new positive integer.
Find the smallest integer after remove k digits.
N <= 240 and k <= N,
在网上看到一些答案, 说是每次删除剩下string里面第一个A[i] > A[i+1] 的数,重复K
次. 这对于每一步是局部最优解, 但我没想明白为什么这样做的是全局最优解.
这个怎么证明?
avatar
l*u
2
利用sub optimal属性证明啊
删k个的最优解肯定是从删k-1的最优解基础上再删1位。否则如果还有更优的k-1解,那
么现在的最优就不是最优了
有点拗口,用数学表达式就更好理解
就是一个greedy问题
avatar
s*p
3
不对啊. 比如考虑19752这个数,现在要删2位, 我们可以先删7得到1952,然后再删9得到
152. 这个1952不是删一位的最优解,但最后我们也得到了152的最优解.
就是说,全局最优解不一定需要从前面的最优解得出来.
avatar
a*l
4
维护一个大小为k的递增栈, 应该就是最优解了吧
avatar
s*p
5
能够严格证明吗?
avatar
l*u
6
不矛盾啊 最优解152 肯定可以从最优解1752的来 不存在比1752更优的解,比1752 差
的解不用理会。每次都找最优解就不会漏掉最终最优解

:不对啊. 比如考虑19752这个数,现在要删2位, 我们可以先删7得到1952,然后再删9得
到152. 这个1952不是删一位的最优解,但最后我们也得到了152的最优解.
:就是说,全局最优解不一定需要从前面的最优解得出来.

【在 s****p 的大作中提到】
: 能够严格证明吗?
avatar
w*e
7
可以,但懒得写详细。就说下大体证法。假设删k个数后的最优解是 N_k, 删k+1个数后
的最优解是 N_{k+1}. 你去比较 N_k 和 N_{k+1} 的首位不同的数字,可以证明N_k和N
_{k+1}唯一不同的就是这个数字(否则N_k和N_{k+1}中必有一个不是最优解,矛盾),
并且这个数字就是 N_k 里 “第一个A[i] > A[i+1] 的数”(否则N_{k+1}不是最优解
,矛盾)。然后数学归纳法从k=1开始推就行。这题要写清楚,有高中数学联赛省一等
奖水平。

【在 s****p 的大作中提到】
: 能够严格证明吗?
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。