zoukankan      html  css  js  c++  java
  • zb的生日

    http://acm.nyist.net/JudgeOnline/problem.php?pid=325

    zb的生日

    时间限制:3000 ms  |  内存限制:65535 KB
    难度:2
     
    描述
    今天是阴历七月初五,acm队员zb的生日。zb正在和C小加、never在武汉集训。他想给这两位兄弟买点什么庆祝生日,经过调查,zb发现C小加和never都很喜欢吃西瓜,而且一吃就是一堆的那种,zb立刻下定决心买了一堆西瓜。当他准备把西瓜送给C小加和never的时候,遇到了一个难题,never和C小加不在一块住,只能把西瓜分成两堆给他们,为了对每个人都公平,他想让两堆的重量之差最小。每个西瓜的重量已知,你能帮帮他么?
     
    输入
    多组测试数据(<=1500)。数据以EOF结尾
    第一行输入西瓜数量N (1 ≤ N ≤ 20)
    第二行有N个数,W1, …, Wn (1 ≤ Wi ≤ 10000)分别代表每个西瓜的重量
    输出
    输出分成两堆后的质量差
    样例输入
    5
    5 8 13 27 14
    样例输出
    3

    类似于:http://www.cnblogs.com/zeze/p/ntoj456.html
     1 #include<stdio.h>
     2 #include<string.h>
     3 int max(int x,int y)
     4 {
     5     if(x>y)return x;
     6     else return y;
     7 }
     8 int main()
     9 {
    10     int n,i,j,f[100001],c[101];
    11     int t;
    12         
    13     while(scanf("%d",&t)!=EOF)
    14     {
    15         int sum=0;
    16         for(i=1;i<=t;i++)
    17         {
    18             scanf("%d",&c[i]);
    19             sum+=c[i];
    20         }
    21         memset(f,0,sizeof(f));
    22         for(i=1;i<=t;i++)
    23         {
    24             for(j=sum/2;j>=c[i];j--)
    25             {
    26                 //f[j]=max(f[j],f[j-c[i]]+c[i]);//会超时! 
    27                 f[j]=(f[j]>f[j-c[i]]+c[i]?f[j]:f[j-c[i]]+c[i]);
    28             }
    29         }
    30         printf("%d
    ",sum-f[sum/2]-f[sum/2]);
    31     }
    32     return 0;
    33 }
    View Code
  • 相关阅读:
    总体设计
    需求分析概述
    毕业论文管理系统(面向对象方法)
    结构化与面向对象项目前期
    各人博客园地址链接
    软件测试
    读后感作业
    运行及总结
    图书馆管理系统面向对象编程
    图书管理系统设计类图
  • 原文地址:https://www.cnblogs.com/zeze/p/nyoj325.html
Copyright © 2011-2022 走看看