zoukankan      html  css  js  c++  java
  • P1164 小A点菜

    口袋里只剩M元(M<=10000)。菜品种类不少,有N种(N<=100),第i种卖ai元(ai<=1000)。每种菜只有一份。他点单一定要把uim身上所有钱花完。他想知道有多少种点菜方法。

    输入输出格式 
    输入格式: 
    第一行是两个数字,表示N和M。

    第二行起N个正数ai(可以有相同的数字,每个数字均在1000以内)。

    输出格式: 
    一个正整数,表示点菜方案数

    输入输出样例 
    输入样例#1: 
    4 4 
    1 1 2 2 
    输出样例#1: 
    3

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    #define inf 999999999
    const int maxn=100005;
    
    int n,m;
    int dp[maxn]; //一维数组维护dp
    int a[maxn];
    
    int main()
    {
        cin>>n>>m;
        for(int i=1; i<=n; i++)cin>>a[i];
    
        dp[0]=1;
    
        for(int i=1; i<=n; i++)
            for(int j=m; j>=a[i]; j--) //价格逆序
                dp[j]+=dp[j-a[i]]; //只要权值到了0,下面dp循环自然就给你加一
    
        cout<<dp[n];
    
        return 0;
    }
  • 相关阅读:
    ASP.NET Session
    表格导入和导出
    C#根据当前时间获取其他时间
    SuperGridControl全局设置
    无框窗体移动
    窗体在屏幕边缘隐藏
    comboBoxEx
    CROSS JOIN
    supergirdcontrol单元格添加控件
    ADVtree
  • 原文地址:https://www.cnblogs.com/planche/p/8438182.html
Copyright © 2011-2022 走看看