Leetcode 416. Partition Equal Subset Sum
来源:互联网 发布:ipad打击乐软件方块 编辑:程序博客网 时间:2024/05/01 18:53
子集和问题
更常见的亦可扩展为背包问题:
0-1 背包问题:
dp[0] = true;dp[0] = 1;for(int n: nums){for(int h=S;h>=n;h--){dp[h] = dp[h]||dp[h-n];//dp[h] = dp[h]+dp[h-n]; // roll array.}}
更加普遍的背包问题(忘了术语是啥):
dp[0] = true;dp[0] = 1;for(int n: nums){for(int h=0;h>=n,h<=S;h++){dp[h] = dp[h]||dp[h-n];//dp[h] = dp[h]+dp[h-n]; // roll array.}}
题目链接: Leetcode 416. Partition Equal Subset Sum
典型动态规划问题,下面是采用dp[]数组表示有多少种子集和计数方案
public class Solution { public boolean canPartition(int[] nums) {int sum = 0;for(int i=0;i<nums.length;i++){sum += nums[i];}if(sum%2==1){ return false;}return subsumSet(nums,sum/2);//return ((sum%2)==1)?false:subsumSet(nums,sum/2); }private boolean subsumSet(int[] nums, int S) {// TODO Auto-generated method stub// out//boolean[] dp = new boolean[S+1];int[] dp = new int[S+1];//dp[0] = true;dp[0] = 1;for(int n: nums){for(int h=S;h>=n;h--){//dp[h] = dp[h]||dp[h-n];dp[h] = dp[h]+dp[h-n]; // roll array.}}//return dp[S]; `if(dp[S]>=1)return true;else{return false;}/*if(i==0){if(nums[i]==S) return true;else return false;}// dynamic programmingreturn subsumSet(nums,S,i-1)||subsumSet(nums,S-nums[i],i-1);*/}}
但是出现如下错误:
将 dp[] 数组改为boolean类型时:有无子集和出现时,代码为下:
public class Solution { public boolean canPartition(int[] nums) {int sum = 0;for(int i=0;i<nums.length;i++){sum += nums[i];}if(sum%2==1){ return false;}return subsumSet(nums,sum/2);//return ((sum%2)==1)?false:subsumSet(nums,sum/2); }private boolean subsumSet(int[] nums, int S) {// TODO Auto-generated method stub// out//boolean[] dp = new boolean[S+1];//int[] dp = new int[S+1];dp[0] = true;//dp[0] = 1;for(int n: nums){for(int h=S;h>=n;h--){dp[h] = dp[h]||dp[h-n];//dp[h] = dp[h]+dp[h-n]; // roll array.}}return dp[S]; `/*if(dp[S]>=1)return true;else{return false;}*//*if(i==0){if(nums[i]==S) return true;else return false;}// dynamic programmingreturn subsumSet(nums,S,i-1)||subsumSet(nums,S-nums[i],i-1);*/}}
Accepted!
I donot know why?
原因在于整型值溢出了
0 0
- Leetcode-416. Partition Equal Subset Sum
- LeetCode—416. Partition Equal Subset Sum
- Leetcode 416. Partition Equal Subset Sum
- 【leetcode】416. Partition Equal Subset Sum
- 【LeetCode】416. Partition Equal Subset Sum
- 【LeetCode】416. Partition Equal Subset Sum
- LeetCode 416. Partition Equal Subset Sum
- 【LeetCode】416. Partition Equal Subset Sum
- Leetcode 416. Partition Equal Subset Sum[medium]
- [LeetCode]416. Partition Equal Subset Sum
- 【LeetCode】 416. Partition Equal Subset Sum
- Leetcode 416. Partition Equal Subset Sum
- Leetcode-416. Partition Equal Subset Sum
- LeetCode 416. Partition Equal Subset Sum
- [leetcode]416. Partition Equal Subset Sum
- LeetCode 416. Partition Equal Subset Sum
- Leetcode Algorithm 416. Partition Equal Subset Sum
- LeetCode 416. Partition Equal Subset Sum
- GOF设计模式-开山篇
- 同步、异步,阻塞、非阻塞的理解
- react native的一些基本概念
- 1!+2!+3!+·····+10!
- PHP环境搭建(2)——安装PHP
- Leetcode 416. Partition Equal Subset Sum
- Python学习V---高级特性
- EAS DButil 分析(自用)
- 给 Android 开发者的 Rx
- PAT-B 1018. 锤子剪刀布 (20)
- 关于laravel的_token传值总结
- LINUX设备文件
- java中File类的常用所有方法及其应用
- Mysql中Limit的用法