九度OJ题目1420:Jobdu MM分水果
2012-04-10 13:38
183 查看
时间限制:2s 内存限制:32M
题目描述:
Jobdu团队有俩PPMM,这俩MM干啥都想一样。一天,富强公司给团队赞助了一批水果,胡老板就把水果派发给了这俩MM,由她们自行分配。每个水果都有一个重量,你能告诉她们怎么分才使得分得的重量差值最小吗?
输入:
输入有多组数据,每组数据第一行输入水果个数n(1<=n<=100),接下来一行输入n个重量wi(0<=wi<=10^5)。
输出:
对每组输入输出一行,输出可以得到的最小差值。
样例输入:
样例输出: 0
该算法的时间和空间开销大,好的算法持续学习中。呵呵。
题目描述:
Jobdu团队有俩PPMM,这俩MM干啥都想一样。一天,富强公司给团队赞助了一批水果,胡老板就把水果派发给了这俩MM,由她们自行分配。每个水果都有一个重量,你能告诉她们怎么分才使得分得的重量差值最小吗?
输入:
输入有多组数据,每组数据第一行输入水果个数n(1<=n<=100),接下来一行输入n个重量wi(0<=wi<=10^5)。
输出:
对每组输入输出一行,输出可以得到的最小差值。
样例输入:
5 10 20 30 10 10
样例输出: 0
#include <iostream> using namespace std; #include <cstdio> #include <cstring> #define N 101 int a ,que[1500001]; bool tag[1500001]; int main() { int n,nq,total,i,j; while(scanf("%d",&n)!=EOF) { for(i=0;i<n;i++) scanf("%d",&a[i]); memset(tag,false,sizeof(tag)); total = 0; tag[0] = true; que[0] = 0; nq = 1; for(i=0;i<n;i++) { total += a[i]; int nqnew = nq; for(j=0;j<nqnew;j++) { if(tag[que[j]+a[i]]==false){ tag[que[j]+a[i]]=true; que[nq++]=que[j]+a[i]; } } } for(i=total/2;i>=0;i--) if(tag[i])break; // printf("%d %d\n",i,total-i); printf("%d\n",total-2*i); } return 0; }
该算法的时间和空间开销大,好的算法持续学习中。呵呵。
相关文章推荐
- 题目1420:Jobdu MM分水果
- 九度oj 1420:Jobdu MM分水果
- [Jobdu] 题目1420:Jobdu MM分水果
- 九度 1420 Jobdu MM分水果
- 九度 1420 Jobdu MM分水果 -- 动态规划、深度优先搜索
- 九度 1420 Jobdu MM分水果 -- 动态规划、深度优先搜索
- 题目1107:搬水果 九度OJ
- JD 1358:陈博的平均主义 && JD 1420:Jobdu MM分水果(01背包)
- 九度笔记之 1420:Jobdu MM分水果
- 题目1028:继续畅通工程 九度OJ
- 九度OJ 题目1007:奥运排序问题
- 九度OJ 题目1061:成绩排序
- 九度OJ 题目1079:手机键盘
- Codevs 题目1299 切水果 (线段树)
- 【剑指Offer面试编程题】题目1510:替换空格--九度OJ
- 九度OJ; 题目1139:最大子矩阵
- 【剑指Offer面试编程题】题目1389:变态跳台阶--九度OJ
- 【剑指Offer面试编程题】题目1515:打印1到最大的N位数--九度OJ
- 九度OJ—题目1351:数组中只出现一次的数字(vector与数组的区别)
- 【剑指Offer面试编程题】题目1368:二叉树中和为某一值的路径--九度OJ