zoukankan      html  css  js  c++  java
  • Hdu 2566 统计硬币

    Problem地址:http://acm.hdu.edu.cn/showproblem.php?pid=2566

    看完这题,这不禁让我想起了hdu的2069。

    两者同样是求有多少种方法,没有要求说明具体的组合方式,因此可以采用生成函数的方法解题。

    可以采用一个二维数组,同时控制硬币的总数量及总价值,其数组某一元素的值为在此数量和总价下的组合方式。

    因此可以采用先打表的方式。

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    
    using namespace std;
    const int MAXN = 700;
    int c1[MAXN][MAXN], c2[MAXN][MAXN];
    int coin[3] = {1,2,5};
    
    int main()
    {
        int i,j,k,l;
        int loop;
        int N,M;
        memset( c1, 0, sizeof(c1) );
        memset( c2, 0, sizeof(c2) );
        for( i=0;i<MAXN;i++ )
            c1[i][i] = 1;
        for( i=1;i<3;i++ ) // the value of coins
        {
            for( j=0;j<MAXN;j++ ) // the num of former coins
            {
                for( l=0;l<MAXN;l++ ) // the value of former coins
                {
                    for( loop=0;loop*coin[i] + l<MAXN && j+loop<MAXN;loop++ )
                    {
                        c2[ j+loop ][ loop*coin[i]+l ] += c1[j][l];
                    }
                }
            }
            for( j=0;j<MAXN;j++ )
            {
                for( k=0;k<MAXN;k++ )
                {
                    c1[j][k] = c2[j][k];
                    c2[j][k] = 0;
                }
            }
        }
        int T;
        cin >> T;
        while( T-- )
        {
            cin >> N >> M;
            cout << c1[N][M] << endl;
        }
        return 0;
    }
    
  • 相关阅读:
    命令行获取当前日期及时间
    Nginx配置性能优化
    一些查看网络连接的命令
    Python 3.5源码编译安装
    Node.js 安装配置
    NFS服务器配置文档
    Linux服务器SSH免密互访
    LVM逻辑卷管理命令
    Zabbix客户端安装
    CentOS 7网卡网桥、绑定设置
  • 原文地址:https://www.cnblogs.com/Emerald/p/4109510.html
Copyright © 2011-2022 走看看