【Luogu P1164】小A点菜

题目原链接:
Luogu 小A点菜
【解题思路】
常规的0-1背包,不过是求装满整个背包的方案数,只要把0-1背包的状态转移方程稍微改一下就行。因为要求方案数,那么把方程中的max换成sum就行。
【解题反思】

  • 要注意变量的含义和题目所问的问题

【参考程序】

#include<iostream>
#include<cstdio>
using namespace std;
int v,n,a[200005],f[10002];
int main()
{
    cin>>v>>n;//v是菜品数量,n是神犇兜兜里装的钱
    for (int i=1;i<=v;i++) cin>>a[i];
    f[0]=1;//0元也是一种方案
    for (int i=1;i<=v;i++)
        for (int j=n;j>=a[i];j--)//要注意j>=a[i]
            f[j]+=f[j-a[i]];//加上去就好
    cout<<f[n];//输出
    return 0;
} 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值