• 杭电 1284 钱币兑换问题【完全背包求方案总数】


    解题思路:因为对于完全背包的状态转移方程f[v]=max(f[v],f[v-c[i]]+w[i])已经记录了所有背包组成的方案,只不过通常问的是求最大值,现在要求方案总数

    即为 f[v]=sum(f[v],f[v-c[i]+w[i]]),

    Problem Description
    在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法。请你编程序计算出共有多少种兑法。
     
    Input
    每行只有一个正整数N,N小于32768。
     
    Output
    对应每个输入,输出兑换方法数。
     
    Sample Input
    2934 12553
     
    Sample Output
    718831 13137761
     
    #include<stdio.h>
    #include<string.h>
    long long  f[50000];
    int a[4];
    long long sum(long long a,long long b)
    {
        return a+b;
    }
    
    int main()
    {
        int n,i,v;
        while(scanf("%d",&n)!=EOF)
        {
            memset(f,0,sizeof(f));
            f[0]=1;
            a[1]=1;
            a[2]=2;
            a[3]=3;
            for(i=1;i<=3;i++)
            {
                for(v=a[i];v<=n;v++)
                f[v]=sum(f[v],f[v-a[i]]);
            }
            printf("%I64d
    ",f[n]);
        }    
    }
    

      

  • 相关阅读:
    1221D
    1249E
    D. Yet Another Monster Killing Problem
    大佬传送门
    Zookeeper客户端连接报错
    搭建PXC集群
    Docker分布式环境
    Docker使用
    Docker入门
    MySQL数据库集群概述
  • 原文地址:https://www.cnblogs.com/wuyuewoniu/p/4149093.html
Copyright © 2020-2023  润新知