zoukankan      html  css  js  c++  java
  • 2362: 愚公的遗愿

    2362: 愚公的遗愿

    Time Limit: 1 Sec  Memory Limit: 64 MB
    Submit: 210  Solved: 30
    [Submit][Status][Web Board]

    Description

    愚公留下遗愿,让他的两个儿子愚大和愚二完成他移山的愿望:将石头搬出大山。一直以来,愚大背大石头,将小石头留给弟弟愚二背。愚二长大后,想分担哥哥的负担,要求背大石头,让哥哥背小石头。愚大不同意。兄弟二人多次讨论,也不能提出一个公平背石头的方案。

    假设有n 块石头,将这n个石头尽可能平分给兄弟二人,即两人分得的石头重量差异最小。请你帮助愚家兄弟解决这个问题。

    Input

    多组输入,对于每组数据

    第一行,一个整数n(3<=n<=1000),表示石头的数目

    第二行,n个整数,对于每个整数a[i](1<=a[i]<=50),表示第i块石头的重量

    Output

    对于每组输入,输出两个数 x,y(x<=y) 分别表示两个兄弟背的石头总重量

    Sample Input

    3
    1 2 3

    Sample Output

    3 3

    #include<stdio.h>
    int max(int a,int b)
    {
        return a>b? a:b;
    }
    int ans[10000001];//ans[i]为容量为i的背包能够取得的最大重量
    int a[1001];//存放n个整数
    int main()
    {
        int n;
        while(~scanf("%d",&n))
        {
            int i,j;
            int sum=0;
            for(i=1; i<=n; i++)
            {
                scanf("%d",&a[i]);
                sum+=a[i];
            }
            int k=sum/2;
            for(i=1; i<=n; i++)//枚举每一个整数
            {
                for(j=k; j>=a[i]; j--)//枚举能够存放该整数的背包
                {
                    ans[j]=max(ans[j-a[i]]+a[i],ans[j]);//在选择该整数与不选择该整数之间取一个最大值
                }
            }
            printf("%d %d
    ",ans[k],sum-ans[k]);
        }
        return 0;
    }
    

      

  • 相关阅读:
    POJ 1258 Agri-Net (prim水题)
    POJ 1258 Agri-Net (prim水题)
    Call to your teacher
    Call to your teacher
    Redis 笔记与总结8 PHP + Redis 信息管理系统(分页+好友关注)
    用R语言求置信区间
    用R语言求置信区间
    竞品分析报告正确的打开方式
    竞品分析报告正确的打开方式
    内容分析在用户反馈分析中的应用
  • 原文地址:https://www.cnblogs.com/mjn1/p/9096043.html
Copyright © 2011-2022 走看看