494. Target Sum(动态规划)
来源:互联网 发布:linux抓包命令 编辑:程序博客网 时间:2024/06/11 02:41
上一篇题解涉及到的只是整数取1的情况,根据这个思路可以拓展到非1的整数集合,下面应用动态规划的思想解决上述的问题:
题意还是如此,从N个数中选出来
状态方程:
dp[i][j]表示前i个数和为j的方案个数
状态转移:
dp[i][j]=dp[i-1][j]+dp[i][j-nums[i]],其中sign=+1 or -1。
最终状态:
dp[N][target] ,其中target=(target+sum)/2
代码:
class Solution {public: int findTargetSumWays(vector<int>& nums, int S) { //test int sum=0; for(int i=0;i<nums.size();i++){ sum+=nums[i]; } if(sum<S||sum<-S) return 0; if((sum+S)%2==1||nums.size()==0) return 0; int target=(sum+S)/2; vector<vector<int>> dp(nums.size(),vector<int>(target+1,0)); for(int i=0;i<=target;i++) {if(nums[0]==i) dp[0][i]=1;} dp[0][0]+=1; for(int i=1;i<nums.size();i++){ for(int j=0;j<=target;j++) { if(j>=nums[i]) dp[i][j]=dp[i-1][j]+dp[i-1][j-nums[i]]; else dp[i][j]=dp[i-1][j]; } } return dp[nums.size()-1][target]; }};
阅读全文
0 0
- 494. Target Sum(动态规划)
- 动态规划-494. Target Sum
- leetcode -- 494. Target Sum【数学转化 + 动态规划】
- 动态规划编程实例——LeetCode 494.Target Sum
- leetcode 494. Target Sum 深度优先遍历DFS + DP动态规划
- 【POJ2479】Maximum sum(动态规划,DP)
- HDOJ 1003 Max Sum(动态规划)
- HDU 1003 Max Sum(动态规划)
- HDU-1003- Max Sum (动态规划)
- HDOJ 1003 Max Sum(动态规划)
- HDU 1003 Max Sum (动态规划)
- HDOJ 1003 Max Sum(动态规划)
- poj2479 Maximum sum(动态规划)
- hdu 1003 Max Sum (动态规划)
- hdoj 1003 Max Sum(动态规划)
- Max Sum(动态规划)
- Maximum sum-动态规划
- hdu1003MAX sum(动态规划)
- 单片机脚本语言移植lua到stm32MDK
- Apache Kafka 入门
- Spring-MVC无xml文件全注解实现简单登录实例
- Win8下 OPENCV3.1 配置CUDA7.5+opencv_contrib
- Linux安装JDK步骤
- 494. Target Sum(动态规划)
- 事务的理解transaction
- tensorflow 实践 (1)机器学习
- Intellij idea开发Hadoop MapReduce程序
- Java基础语言——变量
- CSS之media query模板
- 斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降
- 配置Java环境并实现sublime3编译Java
- Flask博客项目前端设计