1. 转换成我们拿最大(二者相等)的时候,然后sum一减,就可以知道那个最小的剩余是多少。(在进行一次转换,取次次差得最小值)
  2. 然后在转换成以每一个物品为基础,分为三种情况进行讨论。
#include<bits/stdc++.h>
using namespace std;

int res = INT_MAX;
void dfs(vector<int> item, int result1, int result2, int sum, int index, int n){

    //base case 1
    if(index==n){//物品已经选择完了
        //base case 2 得两人选择结果相同才行
        if(result1==result2){
            res = min(res,sum-result1-result2);
        }
        return;//返回重新选择(不管是不是满足条件,反正我物品已经选择完了)
    }


    //三种选择
    dfs(item, result1+item[index],result2, sum,index+1,n);
    dfs(item, result1,result2+item[index], sum,index+1,n);
    dfs(item, result1,result2, sum,index+1,n);

}



int main(){

    int T,n,x;
    cin>>T;
    while(T--){
        cin>>n;
        vector<int> item;
        for(int i=0; i<n;i++){
            cin>>x;
            item.push_back(x);
        }
        int sum = 0;//计算物品总价值
        for(int i=0; i< n;i++){
            sum+= item[i];
        }

        dfs(item,0,0,sum,0,n);
        cout<<res<<endl;
        res = INT_MAX;
    }


    return 0;
}