给定一个数组 在数组中是否存在若干个数之和等于其他若干个数之和
如 a[]={1, 2, 3, 4} 得到 1 + 4 = 3 + 2
可由背包思想衍生
01背包思想如下:
代码如下:
int max(int a, int b)
{
if(a == b) flag = 1; //如果存在两种相同的方案,则flag改变为1
return a > b ? a : b;
}
void work()
{
for(int i = 0; i < n; i++){
for(int j = count; j > a[i]; j--)
a[i] = max(a[i], a[i - a[i]] + a[i]);
}
if(flag) printf("YES!"); 若存在 则输出 YES!
else printf("NO!"); 若不存在 则输出 NO!
}