zoukankan      html  css  js  c++  java
  • 硬币题解

    硬币题解
    大意开门:有一个数x,有n个硬币,要求这n个硬币中选几个硬币和为x,这些组合中每次都重复用的数是多少
    代码飞来:

    include

    include

    using namespace std;
    int f[11000],a[210],b[210];
    int main()
    {
    int n,m,ans=0;
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)scanf("%d",&a[i]);
    for(int t=1;t<=n;t++)
    {
    memset(f,0,sizeof(f));f[0]=1;
    for(int i=1;i<=n;i++)
    {
    if(i!=t)
    {
    for(int j=m;j>=a[i];j--)f[j]+=f[j-a[i]];//这是求除去t号硬币,剩下的硬币和为m的组合方案
    }
    }
    if(f[m]==0)
    //这里是指除去t号硬币,剩下不能组成m,那么t号硬币肯定必选(因为题目说了至少有一种组合超过x元)
    {
    b[++ans]=t;//记录编号t
    }
    }
    printf("%d ",ans);
    for(int i=1;i<ans;i++)printf("%d ",a[b[i]]);
    if(ans>0)printf("%d",a[b[ans]]);
    printf(" ");
    return 0;
    }

  • 相关阅读:
    *Binary Tree Inorder Traversal
    First Unique Character in a String
    回溯法模板
    *Linked List Random Node
    *Odd Even Linked List
    *Maximum Product of Word Lengths
    Flatten 2D Vector
    Docker (dockerfile)
    Docker数据卷
    Docker入门
  • 原文地址:https://www.cnblogs.com/candy067/p/11402042.html
Copyright © 2011-2022 走看看