一、题目概述:有一个没有排序,元素个数为2N的正整数数组。要求把它分割为元素个数为N的两个数组,并使两个子数组的和最接近。假设数组A[1..2N]所有元素的和是SUM。模仿动态规划解0-1背包问题的策略,令S(k, i)表示前k个元素中任意i个元素的和的集合。显然:S(k, 1) = {A[i] |...
分类:
编程语言 时间:
2015-04-26 10:44:06
阅读次数:
138
题目描述:
有一个没有排序,元素个数为2n的正整数数组,要求:如何能把这个数组分割为元素个数为n的两个数组,并使两个子数组的和最接近。
分析:
题目的本质就是要从2n个整数中找出n个,使得它们的和尽可能地靠近所有整数之和的一半。
解法一和二:
伪代码如下:
定义:Heap[i]表示存储从arr中取i个数所能...
分类:
编程语言 时间:
2015-04-26 09:26:23
阅读次数:
158
PHP Array 函数收起函数描述PHParray()创建数组。3array_change_key_case()返回其键均为大写或小写的数组。4array_chunk()把一个数组分割为新的数组块。4array_combine()通过合并两个数组来创建一个新数组。5array_count_valu...
分类:
Web程序 时间:
2015-04-15 09:27:32
阅读次数:
229
由于ECMA提供遍历数组的方法forEach()只能遍历一维数组,没有提供循环遍历多维数组的方法,所以我们自己来实现一个each()方法,来遍历多维数组。————————————————————分割线 call参数——————————————————————call和apply的第一个参数是null...
分类:
编程语言 时间:
2015-04-14 23:14:56
阅读次数:
270
A Simple Problem with IntegersTime Limit: 5000/1500 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4032Accepted Submiss...
分类:
编程语言 时间:
2015-04-01 00:01:25
阅读次数:
231
PHP:指示支持该函数的最早的 PHP 版本。函数 描述 PHParray() 创建数组。 3array_change_key_case() 返回其键均为大写或小写的数组。 4array_chunk() 把一个数组分割为新的数组块。 4array_co...
分类:
编程语言 时间:
2015-02-11 18:30:48
阅读次数:
193
数组分割——解题笔记
题目:有一个没有排序、元素个数为2n的正整数数组,要求:如何能把这个数组分割为元素个数为n的两个数组,并使两个子数组的和最接近。
分析:这道题目可以用动态规划求解,或者说是一个典型的0,1背包问题,对于第i的数,到底是放进去还是不放,就要看放了对结果有什么影响,不放对结果又有什么影响。而结果是依据题目而言的,这道题目中的结果就是数组之和...
分类:
编程语言 时间:
2015-02-04 16:41:10
阅读次数:
179
【题目】
任意2N个正整数,从其中选出N个整数,使得选出的N个整数和同剩下的N个整数之和的差最小。
【来源】
网易
【分析】
假设数组A[1..2N]所有元素的和是SUM。模仿动态规划解0-1背包问题的策略。
从2N个数中找N个元素,有三种可能:大于Sum/2,小于Sum/2以及等于Sum/2。而大于Sum/2与小于等于Sum/2没区别,故可以只考虑小于等于Sum/2的情况。
令S(...
分类:
编程语言 时间:
2015-02-01 13:34:17
阅读次数:
304
php源代码之函数集介绍array_change_key_case — 返回字符串键名全为小写或大写的数组array_chunk — 将一个数组分割成多个array_combine — 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值array_count_values — 统计数组中...
分类:
Web程序 时间:
2015-01-14 21:19:15
阅读次数:
362
i = 0; while(all[i] != '=') { vindex[i] = all[i]; i++; } vindex[i] = '\0'; i++; vtypei = i; while(all[i] != '=') { vtype[i - vtypei] = a...
分类:
编程语言 时间:
2015-01-04 18:35:54
阅读次数:
160