题目地址:http://ac.jobdu.com/problem.php?pid=1420

题目描述:

Jobdu团队有俩PPMM,这俩MM干啥都想一样。一天,富强公司给团队赞助了一批水果,胡老板就把水果派发给了这俩MM,由她们自行分配。每个水果都有一个重量,你能告诉她们怎么分才使得分得的重量差值最小吗?

输入:

输入有多组数据,每组数据第一行输入水果个数n(1<=n<=100),接下来一行输入n个重量wi(0<=wi<=10^5)。

输出:

对每组输入输出一行,输出可以得到的最小差值。

样例输入:
510 20 30 10 10 
样例输出:
0

0/1背包解法:

//题目地址:http://ac.jobdu.com/problem.php?pid=1420
#include <stdio.h>
#include <string.h> #define Max(a, b) (a > b)?(a):(b); int n, sum;
int fruit[100];
int dp[5000001]; int MinDiff(){
int i, j;
int first, second, ans;
int half = (sum >> 1);
memset(dp, 0, sizeof(dp));
for (i = 0; i < n; ++i){
for (j = half; j >= fruit[i]; --j){
dp[j] = Max(dp[j], dp[j-fruit[i]] + fruit[i]);
}
}
return sum - 2 * dp[half];
}
int main(int argc, char *argv[]) {
int i;
while (scanf("%d", &n) != EOF){
sum = 0;
for (i = 0; i < n; ++i){
scanf("%d", &fruit[i]);
sum += fruit[i];
}
printf("%d\n", MinDiff());
}
return 0;
}
/**************************************************************
Problem: 1420
User: 简简单单Plus
Language: C
Result: Accepted
Time:1170 ms
Memory:20444 kb
****************************************************************/

深度优先搜索解法:

#include <stdio.h>
#include <string.h> int n, k, fruit[100], used[100], total, half; void dfs(int x, int y) {
int i;
if (y > half) return;
if (y > k) k = y;
if (k == half) return;
for (i = x; i < n; i++)
  if (!used[i]) {
used[i] = 1;
dfs(i + 1, y + fruit[i]);
used[i] = 0;
}
} int main() {
int i;
while(scanf("%d",&n) != EOF) {
total = 0;
for(i = 0;i < n; i++) {
scanf("%d", &fruit[i]);
total += fruit[i];
}
k = -1;
half = total >> 1;
memset(used, 0, sizeof(used));
dfs(0, 0);
printf("%d\n", total- k * 2);
}
return 0;
}
/**************************************************************
Problem: 1420
User: 简简单单Plus
Language: C
Result: Accepted
Time:50 ms
Memory:916 kb
****************************************************************/
 

九度 1420 Jobdu MM分水果 -- 动态规划、深度优先搜索的更多相关文章

  1. 九度OJ 1209 最小邮票数 -- 动态规划

    题目地址:http://ac.jobdu.com/problem.php?pid=1209 题目描述: 有若干张邮票,要求从中选取最少的邮票张数凑成一个给定的总值.     如,有1分,3分,3分,3 ...

  2. 九度OJ 1408 吃豆机器人 -- 动态规划

    题目地址:http://ac.jobdu.com/problem.php?pid=1408 题目描述: 淘宝公司内部有许多新鲜的小玩具,例如淘宝智能机器人.小时候,大家都玩过那个吃豆子的游戏吧,这机器 ...

  3. 九度OJ 1532 棋盘寻宝扩展 -- 动态规划【背包问题】

    题目地址:http://ac.jobdu.com/problem.php?pid=1532 题目描述: 现在有一个8*8的棋盘,上面放着64个不同价值的礼物,每个小的棋盘上面放置一个礼物(礼物的价值大 ...

  4. 九度OJ 1077 最大序列和 -- 动态规划

    题目地址:http://ac.jobdu.com/problem.php?pid=1077 题目描述: 给出一个整数序列S,其中有N个数,定义其中一个非空连续子序列T中所有数的和为T的“序列和”. 对 ...

  5. 九度OJ 1107:搬水果 (贪心)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5190 解决:1747 题目描述: 在一个果园里,小明已经将所有的水果打了下来,并按水果的不同种类分成了若干堆,小明决定把所有的水果合成一堆 ...

  6. [置顶] 九度笔记之 1434:今年暑假不AC

    题目1434:今年暑假不AC 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:307 解决:180 题目描述: “今年暑假不AC?”“是的.”“那你干什么呢?”“看世界杯呀,笨蛋!”“@# ...

  7. [置顶] 九度笔记之 1494:Dota

    题目1494:Dota 1 秒 内存限制:128 兆 特殊判题:否 提交:559 解决:122 题目描述: 大家都知道在dota游戏中,装备是对于英雄来说十分重要的要素. 英雄们不仅可以购买单个的装备 ...

  8. 九度OJ 1531 货币面值(网易游戏2013年校园招聘笔试题) -- 动态规划

    题目地址:http://ac.jobdu.com/problem.php?pid=1531 题目描述: 小虎是游戏中的一个国王,在他管理的国家中发行了很多不同面额的纸币,用这些纸币进行任意的组合可以在 ...

  9. 【九度OJ】题目1107:搬水果 解题报告

    [九度OJ]题目1107:搬水果 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1107 题目描述: 在一个果园里,小明已经将所有的水 ...

随机推荐

  1. C++ CheckMenuItem

    菜单单选 关键点 CMenu::GetMenuState UINT GetMenuState( UINT nID, UINT nFlags ) const; MF_CHECKED MF_DISABLE ...

  2. MultiCardMenu

    https://github.com/wujingchao/MultiCardMenu MultiCardMenu-master.zip

  3. MySQL并发复制系列二:多线程复制

     http://blog.itpub.net/28218939/viewspace-1975822/ 并发复制(Parallel Replication) 系列二: Enhanced Multi-th ...

  4. 【ZZ】Python入门神图

    http://mp.weixin.qq.com/s?__biz=MzA3OTIxNTA0MA==&mid=401383338&idx=1&sn=73009cce06d58656 ...

  5. Java_spark简单例子

    import org.apache.spark.{SparkContext, SparkConf} /** * Created by spark on 15-1-19. * 根据key对K-V类型的R ...

  6. Helpers\Sessions

    Helpers\Sessions The session is a static class, this means it can be used in any controller without ...

  7. JavaWeb中的简单分页

    这次主要是讲解一下通过登录后对得到的数据进行分页,首先我们新建一个登录页面login.jsp,因为我们主要学习一下分页,所以登录验证的部分不再阐述,主要代码如下: <form action=&q ...

  8. [Java,MVC] SpringMVC+Spring+hibernate 框架

    转自:http://my.oschina.net/Thinkeryjgfn/blog/158951 1.准备的jar包以及配置文件如下: 2.新建一个JAVA web项目 3.建好以后出现以上包结构即 ...

  9. sql 自定义函数--十进制转二进制

    随笔记忆: if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DECTOBIN]') and xtype in ...

  10. warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失

    bug来源: 一直在看sift然后就手贱的给 opencv源码做注释,如果在vs里面打开会一直相安无事,但是问题出在我用了notepad++. 这样就报了标题的错误. 因为notepad++会以uni ...