Rqnoj 题目 72拔河比赛 (01背包)

来源:互联网 发布:淘宝亿次元 编辑:程序博客网 时间:2024/05/20 21:48
PID72 / 拔河比赛
  • 提交你的代码
  • 查看讨论和题解
题目描述

superwyh的学校要举行拔河比赛,为了在赛前锻炼大家,老师决定把班里所有人分为两拨,进行拔河因为为锻炼所以为了避免其中一方的实力过强老师决定以体重来划分队伍,尽

量保持两个队伍的体重差最少,因为老师对结果没兴趣,所以只告诉老师最小的体重差是多少就行了。这个受苦受累的任务就交给superwyh了,因为这两天superwyh的后背间谍sjh

闹肚子了,所以只好superwyh亲自去调查每个人的体重,但是仅仅知道体重依然难以确定到底如何分配队伍,请各位oier帮助superwyh出出主意。

输入格式

第一行为人数(1<=n<=100),从第二行开始是每个人的体重(0<=m<=100)。

输出格式

最小体重差。

样例输入
样例输出

提交题目 C++ Language

01背包简单应用

ac代码

#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#define max(a,b) (a>b?a:b)int dp[11000],a[110];int main(){int n;while(scanf("%d",&n)!=EOF){int i,sum=0,j;for(i=1;i<=n;i++){scanf("%d",&a[i]);sum+=a[i];}int m=sum/2;memset(dp,0,sizeof(dp));for(i=1;i<=n;i++){for(j=m;j>=a[i];j--){dp[j]=max(dp[j],dp[j-a[i]]+a[i]);}}printf("%d\n",abs(sum-2*dp[m]));}}


0 0
原创粉丝点击