题目:
现在有n个物品,每一个物品都有一个价值,现在想将这些物品分给两个人,要求这两个人每一个人分到的物品的价值总和相同(个数可以不同,总价值相同即可),剩下的物品就需要扔掉,现在想知道最少需要扔多少价值的物品才能满足要求分给两个人。

这道题我认为是选择问题 通过dfs每一种可能的选择,找到所有可能的解法
题意转换
将题意转换很重要,题目是求最少丢掉多少物品能够平分给两个人,转换为两个人从0开始拿,计算出所有满足平分条件的最值(最少丢弃)
具体步骤
- 首先将题目转换为两个人从0开始拿物品,对于每一件物品开始进行选择,对于每个物品有三种选择,给第一个人、给第二个人、丢掉。
2.参数说明:nums记录n个物品的价值 ;result1、result2记录两个人目前分别拿了多少;sum记录所有元素总和,index记录选择进行到哪个元素了,n记录总共有多少个需要选择的物品
3.选择结束条件:搜索到最后一个物品 判断两者是否相等 相等则记录此时的最值
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>
#include<bits/stdc++.h>
//定义两组数据的累加和 从0开始dfs每种可能,遇到两者相同的情况,就记录此时需要扔掉
//选择问题 两个人从0开始拿物品,遇到一个物品有三种选择,给第一个人,给第二个人,扔掉。
//走到结尾就找到舍弃价值最小的那一个节点
int res = INT_MAX;//最小扔掉的价值
void dfs(vector&

dfs&spm=1001.2101.3001.5002&articleId=118727027&d=1&t=3&u=4b97a96d149a4489a8035b78ddc12e79)
467

被折叠的 条评论
为什么被折叠?



