zoukankan      html  css  js  c++  java
  • 又一年拔河比赛

    一些废话:

    怎么说写完前两道题再写这道题思路就顺畅多了。但还是写了半个小时。

    依然是 dfs 。。。和上两道题思路挺像的。


    首先,根据

    拔河比赛两边人数最多不能相差 1。
    可得:如果 n 是偶数那么两组的人数就只能相等,如果 n 是奇数那么我们只要选出人数为 (n-1)/2 的一组就行了。
    所以要选的人数即为 n/2 。
    要使两队体重最接近,可以根据体重总和求出另一组的体重,不断更新答案。
    注意多组数据要每次给变量赋初值。
    最后放下代码:
     
    #include<bits/stdc++.h>
    using namespace std;
    int t,n,a[21],sum,ans = 1e9,b;
    void dfs(int s,int t,int p)//传递到第几位,目前的人数,目前的和 
    {
        if(s > n) return;
        if(t > n / 2)
        {
            ans = min(abs(2 * p - sum),ans);
            return;
        }
        dfs(s + 1,t + 1,p + a[s]);
        dfs(s + 1,t,p);
        return;
    }
    int main()
    {
        scanf("%d",&t);
        while(t --)
        {
            ans = 1e9;sum = 0;//第一次就写错在这里了qwq
            scanf("%d",&n);
            for(int i = 1;i <= n;i ++)
            {
                scanf("%d",&a[i]);
                sum += a[i];
            }
            dfs(1,0,0);
            cout << ans << endl;
        }
        return 0;
    }
  • 相关阅读:
    三种等待时间的区别
    多种测试的测试方法
    测试面试题总结
    自动化过程中定位不到元素时使用等待方法
    账号登录测试,多表查询
    TP商城添加购物车自动化测试
    二十四个球
    老鼠喝药
    购物车测试点
    前后端分页
  • 原文地址:https://www.cnblogs.com/ying-xue/p/you-yi-nian-ba-he-bi-sai.html
Copyright © 2011-2022 走看看