• poj 1837 Balance


    题目链接:http://poj.org/problem?id=1837

        用DP求解,相当与01背包。起初依然是没有想到具体的思路,看了下解题报告后发现与01背包如此接近。

        

        从此题开始进入DP模式... 

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std ;
    int dp[20][15010], C[25], G[25] ;
    int main(){
        int c, g, i, j, k ;
        while(~scanf("%d%d", &c, &g)){
            for(i=1; i<=c; i++)
                cin >> C[i] ;
            for(i=1; i<=g; i++)
                cin >> G[i] ;
            memset(dp, 0sizeof(dp)) ;
            dp[0][7500] = 1 ;
            for(i=1; i<=g; i++){
                for(j=1; j<=15000; j++){
                    if(dp[i-1][j])
                        for(k=1; k<=c; k++)
                            dp[i][j+G[i]*C[k]] += dp[i-1][j] ;
                }
            }
            cout << dp[g][7500] << endl ;
        }
        return 0 ;

    } 

  • 相关阅读:
    hdu2151
    hdu1028
    hdu1398
    hdu1465
    hdu2853
    poj2195
    poj2255
    JS正则校验数字,特殊字符,邮箱基本格式
    JS正则校验数字,特殊字符,邮箱基本格式
    io读取文件内容乱码处理
  • 原文地址:https://www.cnblogs.com/xiaolongchase/p/2214317.html
Copyright © 2020-2023  润新知