zoukankan      html  css  js  c++  java
  • UVA 562 Dividing coins

    考虑全面,01背包问题:

    代码如下:

    #include<string.h>
    #include<stdio.h>
    #include<stdlib.h>
    #define MAXN 100 + 5
    #define MAXN1 25000 + 100
    int coin[MAXN], f[MAXN][MAXN1];
    int n, m, sum, c;
    /*int cmp(const void* _p, const void* _q)
    {
    int *p = (int *)_p;
    int *q = (int *)_q;
    return *p - *q;
    }
    */
    void dp()
    {
    int i, j, k;
    memset(f, 0, sizeof(f));
    /*for(i = 1; i <= m; i ++)
    {
    if(coin[i]>c) break;
    for(j = coin[i]; j <= c; j ++)
    {
    if(f[i-1][j] < f[i-1][j-coin[i]]+coin[i])
    f[i][j] = f[i-1][j-coin[i]]+coin[i];
    else f[i][j] = f[i-1][j];
    }
    }
    */
    for(i = 1; i <= m; i ++)
    for(j = 0; j <= c; j ++)
    {
    f[i][j] = f[i - 1][j];
    if(j >= coin[i] && (k = f[i - 1][j - coin[i]] + coin[i]) > f[i][j])
    f[i][j] = k;
    }
    printf("%d\n",sum-2*f[m][c]);
    }
    void input()
    {
    while(scanf("%d",&n) == 1)
    {
    while(n --)
    {
    sum = 0;
    scanf("%d",&m);
    for(int i = 1; i <= m; i ++)
    {
    scanf("%d",&coin[i]);
    sum += coin[i];
    }
    c = sum / 2;
    //qsort(coin + 1, m, sizeof(coin[0]), cmp);
    dp();
    }
    }
    }
    int main()
    {
    input();
    return 0;
    }



  • 相关阅读:
    让网页活起来!韵律线带你提升带你飞!
    打造晶格化背景
    简单banner制作
    设计模式-适配器模式
    类、方法的单一职责
    .NET趋势
    C# Delegate Event
    VB.NET项目技术总结
    版本控制工具Git的使用
    delete语句要注意的BUG.
  • 原文地址:https://www.cnblogs.com/yuzhaoxin/p/2399454.html
Copyright © 2011-2022 走看看