有人提议说模拟 背包算法....背包算法大概可以表示为给你一个包,然后你让这个包尽可能的有价值,对应的就是,这个包的大小就是 sum(c)/2 (这样就可以让他们的绝对值最小),然后问题来了,这个算法只会视价值来分配...设 dp(i,j,k) 为,从前i件中拿j个数,且不能超过c 的最大值:
这样的话 递归方程 dp(i,j,k) = max( dp(i-1,j-1,k - c[i]) +c[i] , dp(i-1,...= new node(i-1);
int max1 = a[i-1]+iSelectj(i-1,j-1,c-a[i-1],p1);
//不用的话,就继续用上一层传进来的结点...带的结点
deleteNode(p1);
return max2;
}
}
再接着,突然想起 C++的标准算法里面有个全排列的,发现用他的话,也可以很容易的写出来...= new node(i-1);
int max1 = a[i-1]+iSelectj(i-1,j-1,c-a[i-1],p1);
//不用的话,就继续用上一层传进来的结点