Facebook超级背包问题, Combination Sum IV

参考: https://mp.weixin.qq.com/s?__biz=MzA5MzE4MjgyMw==&mid=2649455651&idx=1&sn=2cfd46678f2a43aaf9f888aa58c8c080&chksm=887e122bbf099b3d49a3ea399d3c01f8967a0bbe2462fa2c28fee42daadb06b6678668de8b8b&mpshare=1&scene=1&srcid=0317hOi4csT3vilJsndabLdI&key=e10ebddae0f43000ef8f862d52c5d4a551cbf0cd7e5d2d2c45986642dd84e9db70aada9245d7c6c7d4aab4fbfc6e9710b4f3e74b21aea5aac00952f258131a659a0d38f9f4a5472b1722afa0223e044d&ascene=0&uin=MTUyMzg3NjAwMA%3D%3D&devicetype=iMac+MacBookAir7%2C1+OSX+OSX+10.12.3+build(16D32)&version=12020010&nettype=WIFI&fontScale=100&pass_ticket=0AiIToHJN8yqpuqRAsA5PaaQMJr8KtvlnZ2EqkX0zx%2BEZweRvHKyF%2ByjmycpUbVn



Facebook超级背包问题, Combination Sum IV_第1张图片


Facebook超级背包问题, Combination Sum IV_第2张图片





Facebook超级背包问题, Combination Sum IV_第3张图片




Facebook超级背包问题, Combination Sum IV_第4张图片

好奇怪。。。这个真的是我写的吗。。。为什么一点印象没有。

这里分析一下Run Time. 为什么说复杂度达到了O(N^M).  因为最差情况,target每次只减去1. 对于一个case就要减M次。所以= n*n*n*n...n=n^m

Facebook超级背包问题, Combination Sum IV_第5张图片

最优解: DP:

假设我们要求target, 先想一下target的上一步。 比如说target -10.   Target Sum =9 只要再有一个1就可以到10.

Target sum 8再有一个2就可以到10. 所以我们就是遍历所有的能够取array里一个元素到target的情况。

Facebook超级背包问题, Combination Sum IV_第6张图片


Facebook超级背包问题, Combination Sum IV_第7张图片

你可能感兴趣的:(Facebook超级背包问题, Combination Sum IV)