题目如下:

解题思路:这题可以用动态规划来做。记dp[i][j] = x,表示使用nums的第0个到第i个之间的所有元素得到数值j有x种方法,那么很容易得到递推关系式,dp[i][j] = dp[i-1][j - nums[i]] + dp[i-1][j + nums[i]]。考虑到j可以为负数,因为j的取值范围是[-sum(nums) ,sum(nums)],为了保证在dp数组中的j一直为正数,我们做一个数组的向右平移,平移sum(nums)的长度,即把-sum(nums) 移动到0。

代码如下:

class Solution(object):
def findTargetSumWays(self, nums, S):
"""
:type nums: List[int]
:type S: int
:rtype: int
"""
Amount = sum(nums)
if S > Amount or S < -Amount:
return 0
MaxValue = max(nums)
dp = [[0 for x in xrange(2*(Amount+MaxValue)+1)] for x in nums]
dp[0][nums[0] + Amount] += 1
dp[0][-nums[0] + Amount] += 1
for i in xrange(1,len(dp)):
for j in xrange(-Amount,Amount+1):
dp[i][j + Amount] = dp[i - 1][j - nums[i]+ Amount] + dp[i - 1][j + nums[i] + Amount] #print dp return dp[len(nums)-1][S+ Amount]

最新文章

  1. 支付宝Andfix 原理解析
  2. WCF序列化
  3. Mysql命令行中文乱码的解决方法
  4. 学习Swift -- 错误处理
  5. 位运算 (&amp;|)与--或 一位数组表示多种意思~~ 与--或
  6. 【原创】纯OO:从设计到编码写一个FlappyBird (四)
  7. linode digitalocean哪个更好
  8. 对Vue.js $watch方法的理解
  9. 51nod_1639:绑鞋带
  10. 201521123042《Java程序设计》第11周学习总结
  11. [JSOI2007]合金
  12. WebApiClient的接口输入验证
  13. APP数据的爬取
  14. frist Django app — 三、 View
  15. Tomcat 启动时 SecureRandom 非常慢解决办法,亲测有效
  16. 小程序图表wx-chart
  17. Liferay7 BPM门户开发之8: Activiti实用问题集合
  18. Unity3d之树木创建的参数设定
  19. CentOS 离线安装Gitlab-ce
  20. iOS开发-观察者模式

热门文章

  1. C#简单工厂模式和单列设计模式潜要解析
  2. 手把手教你搭建一个 Elasticsearch 集群
  3. python 并发编程 多进程 Process对象的其他属性方法 terminate与is_alive name pid 函数
  4. Linux进程状态——top,ps中看到进程状态D,S,Z的含义
  5. C语言第八周编程作业
  6. 使用 PC 做 FTP/TFTP 服务器,上传和下载文件
  7. MySQL-快速入门(4)MySQL函数
  8. windows上zeal安装和使用--离线API文档
  9. P1622释放囚犯
  10. [多校联考2019(Round 5 T1)] [ATCoder3912]Xor Tree(状压dp)