python数组分成两个和相等的子集_javascript,_动态规划——把一个整数数组分成两个和相等的子集,怎么写,javascript - phpStudy...

动态规划——把一个整数数组分成两个和相等的子集,怎么写

当数组nums=[2,3,5]时,测试通过,但当nums=[5,3,2]时,测试就不能通过,这是为什么?

window.onload = function() {

//nums = [3,2,5];

nums=[5,3,2];

console.log("****************"+canPartition(nums))

}

var canPartition = function(nums) {

var totleSum = 0;

var minNums = Math.min.apply(null, nums);

for (var i = 0; i < nums.length; i++) totleSum += nums[i];

if (totleSum % 2 !== 0) return false;

var target = totleSum / 2;

var len = nums.length;

var value = nums;

var dp = new Array();

var str = [];

for (var i = 0; i < len; i++) {

// dp[i] = new Array();

dp[i] = [];

}

for (var i = nums[0]; i <= target; i++) {

dp[0][i] =value[0];

console.log(dp[0][i]);

}

console.log("----------------");

for (var i = 1; i < len; i++) {

str = [];

for (var j = target; j >=nums[i] ; j--) {

var q = dp[i - 1][j];

if(q === NaN || q === undefined)

console.log("j:" + j + " " +"i-1:"+(i-1)+" "+ "nums[i]:" + nums[i] + " " + "dp[i-1][j]:" + dp[i - 1][j]);

var x = dp[i - 1][j - nums[i]];

if (x === undefined || x === NaN){ x=0;

console.log("j:" + j + " " +"i-1:"+(i-1)+" "+ "nums[i]:" + nums[i] + " " + "dp[i-1][j-nums[i]] + value[i]:" + z);}

var y = value[i];

var z = x + y;

dp[i][j] = Math.max(q, z);

console.log(dp[i][j]);

}

}

if (dp[len - 1][target] === target) return true;

else return false;

};

相关阅读:

svn添加忽略文件夹无效

jwplayer皮肤的修改

myeclipse引用别人发布的webservice报错

js动态获取服务器时间显示在页面时为什么会延迟一两秒?

自动生成数组或其它数据的java库?

汉诺塔递归问题解释

微信服务号商城进行购买时,微信提示登录验证已过期,请重新登录。这是什么原因。

JavaScript中标签页切换时一闪而过,无法切换,只停留在默认的第一页

vue中使用...扩展符为什么会报unexpected token的语法错误?

在什么情况下用自执行函数比较好?

有什么办法快速把网站套一层皮变成手机上的app?

js闭包谁能给我讲讲?

c++ 隐式向上转换的向上指什么?

现在最新Discuz启用全站https有没有问题了?

xampp 虚拟主机设置问题

购物车商品数量加减效果

mysql中和钱有关的字段应该用什么类型好

如何做一个优秀的团队组长?

laravel 5.2.22 认证登录的问题。

c语言switch结构+循环题目

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值