vs网站毕业设计怎么做,网站外链建设可以提升网站权重对还是错,做seo推广一年大概的费用,wordpress创建配置文件 没反应题目描述#xff1a;给定一个正数数组arr#xff0c;请把arr中所有的数分成两个集合#xff0c;尽量让两个集合的累加和接近#xff0c;返回最接近的情况下#xff0c;较小集合的累加和sum。
way#xff1a;选还是不选
//arr[index...]可以自由选择,返回累加和尽量接近…题目描述给定一个正数数组arr请把arr中所有的数分成两个集合尽量让两个集合的累加和接近返回最接近的情况下较小集合的累加和sum。
way选还是不选
//arr[index...]可以自由选择,返回累加和尽量接近rest,但不能超过rest的情况下,最接近的值
#includeiostream
#includevector
using namespace std;//arr[index...]可以自由选择,返回累加和尽量接近rest,但不能超过rest的情况下,最接近的值
int process(vectorintarr, int index, int rest)
{//没有数可选if(indexarr.size()){return 0;}//如果不选当前数int p1process(arr,index1,rest);//如果选当前数前提是可以选)int p20;if(rest-arr[index]0){p2arr[index] process(arr,index1,rest-arr[index]);}return max(p1,p2);
}int way(vectorintarr)
{//不合法的数组if(arr.size()2) return -1;int sum0,Narr.size();for(int i0; iN; i){sumarr[i];}return process(arr,0, sum1);
} way2dp版。
int dpWay(vectorintarr)
{//不合法的数组if(arr.size()2) return -1;int sum0,Narr.size();for(int i0; iN; i){sumarr[i];}int half(sum1);vectorvectorintdp(N1, vectorint(half1));for(int indexN-1; index0; index--){for(int rest0; resthalf; rest){int p1dp[index1][rest];int p20;if(rest-arr[index]0){p2arr[index]dp[index1][rest-arr[index]];}dp[index][rest]max(p1,p2);}}return dp[0][half];
}