请选择 进入手机版 | 继续访问电脑版

【ybt高效进阶1-4-1】拔河比赛

[复制链接]
盛夏丨光年丶 发表于 2021-1-1 17:45:50 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
拔河角逐

题目链接:ybt高效进阶1-4-1

题目

要把一群人分成两组,要求人数差不超过 1,两组中每个人的值的和相差尽大概小。
求相差值最小是多少。
思路

发现人数最多只有二十个,我们考虑直接深搜。
就直接枚举每一个人在左边照旧右边,然后如果双方人数差不超过一,就算双方差值。
然后找到的所有差值算最小的,就是答案了。
代码

[code]#include#include#includeusing namespace std;int T, n, a[21], ans;void dfs(int now, int left_num, int dif) {        if (now == n + 1) {                if (abs(n - left_num - left_num) > 1) return ;                ans = min(ans, abs(dif));                return ;        }        dfs(now + 1, left_num + 1, dif + a[now]);//这个人去左边        dfs(now + 1, left_num, dif - a[now]);//这个人去右边}int main() {        scanf("%d", &T);        for (int times = 1; times
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )