百科问答小站 logo
百科问答小站 font logo



这个号称「微软的面试题」,该如何解答? 第1页

  

user avatar   be5invis 网友的相关建议: 
      

什么时候加上了绝对值……

带绝对值就是 Partition Problem 了,有一个伪多项式的 DP 算法,思路大概是这样的:

       var cache = ...; function P(a, j, l, s) { // a[0..j] 中有长度为 l 且总和为 s 的子集吗?     if(cache.has(j, l, s)) return cache.find(j, l, s) // 缓存     if(l === 0 && s === 0) return cache.save(j, l, s, true);     if(l === 0 && s !== 0 || j === 0 && l > 0 || j === 0 && s !== 0) return cache.save(j, l, s, false);     return cache.save(j, l, s, P(a, j - 1, l, s) || P(a, j - 1, l - 1, s - a[j - 1])) }  for(var s = Math.floor((sum(a) + sum(b)) / 2); s >= 0; s--){     if(P(a.concat(b), n * 2, n, s)) { ... } }      

不带绝对值的话

先要说清楚定义,因为如果只能交换 ab 中的对应项,那么很简单的贪心法就能解决;如果可以多次任意交换,那么就是排序完切割;如果是一次交换若干对的话,是 2n×2n 的二分图最佳匹配,用 KM。




  

相关话题

  想裸写编译器,除了编译原理外还有那些资料可以参考?应该从什么开始写起?(用c/c++)? 
  许多老程序员不建议新手用IDE集成开发环境,而是用编辑器+编译器,用命令行编译,这个怎么看? 
  在美国市场的 TikTok 竞品,未来是否有可能超越 TikTok? 
  程序员想通过自己的APP创业,可行吗? 
  在桌面领域,为什么免费的 Linux 输给了收费的 Windows? 
  怎么看待微软砍掉 .NET 6 热重载代码惹恼开源社区? 
  让你觉得惊叹无比的代码片段或者正则表达式? 
  程序员如何快速工资翻倍? 
  学建筑的孩子最近要买电脑,Surface Pro 7 和 拯救者,哪个更适合? 
  请教大神大仙,保安大叔级别想业余学习制作uwp APP,英语数学都特差,有可能学习吗? 

前一个讨论
如何评价微软2016年3月18日Windows 10 Mobile推送放弃绝大多数旧机型的决定?
下一个讨论
如何评价微软PowerShell将支持SSH?





© 2025-06-15 - tinynew.org. All Rights Reserved.
© 2025-06-15 - tinynew.org. 保留所有权利