zoukankan      html  css  js  c++  java
  • 数字组合

    2985:数字组合

    内存限制: 
    65536kB
    描述
    有n个正整数,找出其中和为t(t也是正整数)的可能的组合方式。如:
    n=5,5个数分别为1,2,3,4,5,t=5;
    那么可能的组合有5=1+4和5=2+3和5=5三种组合方式。
    输入
    输入的第一行是两个正整数n和t,用空格隔开,其中1<=n<=20,表示正整数的个数,t为要求的和(1<=t<=1000)
    接下来的一行是n个正整数,用空格隔开。
    输出
    和为t的不同的组合方式的数目。
    样例输入
    5 5
    1 2 3 4 5
    样例输出
    3


    【思路】背包方案问题
    【代码】
    #include<iostream>
    #include<cstdio>
    using namespace std;
    int a[20000];long long f[20000];//f[j]组成为数字j时的方案数 
    int main()
    {
        int n,t;
        scanf("%d%d",&n,&t);
        for(int i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
    }    
        f[0]=1;
        for(int i=1;i<=n;i++)//循环每种数字(因为每种决策是这个数字选不选) 
        { 
            for(int j=t;j>=a[i];j--)
            {
                    f[j]=f[j]+f[j-a[i]];
            }
        }
        printf("%d",f[t]);//是f[t]不是f[n]; 
        return 0;
    }
  • 相关阅读:
    asp后台读id设置样式
    js,需要更多源字符
    列名无效
    asp,对待绑定数据加序号列(DataSet)
    ashx 绝对路径得到物理路径
    方法执行一次js
    小细节
    Spring oauth大致流程
    第六章 分支语句和逻辑运算符
    第七章 函数
  • 原文地址:https://www.cnblogs.com/zzyh/p/6749826.html
Copyright © 2011-2022 走看看