HDU——2566 统计硬币 (简单枚举 || 母函数)

博客介绍了HDU 2566题目的解决方案,该题目要求统计1分、2分、5分硬币组成特定面值的所有可能组合。博主提出了两种方法:一种通过减少循环次数降低时间复杂度至O(n^2),另一种利用面值关系优化至O(m),并给出了相应的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Problem Description

假设一堆由1分、2分、5分组成的n个硬币总面值为m分,求一共有多少种可能的组合方式(某种面值的硬币可以数量可以为0)。

Input

输入数据第一行有一个正整数T,表示有T组测试数据;
接下来的T行,每行有两个数n,m,n和m的含义同上。

Output

对于每组测试数据,请输出可能的组合方式数;
每组输出占一行。

Sample Input

2
3 5
4 8

Sample Output

1
2

解题思路:

方法一 : 拿到这个题目 , 三层循环就可以解决,但是时间复杂度太高 ,为O(n^3).此基础上,因为总量是确定的,确定了前两个的个数之后 , 第三个也能够确定 , 所以可以减少一层循环,时间复杂度也可以相对降低一点 , 为 O(n^2).
代码:

//方法一 直接枚举 , 时间复杂度为 O(n^2)
/*
#include <cstdio>
#include <cstring>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值