文章
16
粉丝
0
获赞
66
访问
3.5k
首先分析题意,即要判断给定数能否用一组数凑出,可以利用贪心的思想,首先我们将可以用来凑数的数字从小到大排(从大到小排同理,懒得写cmp而已),而后从最大的开始用起,如果最大的数已经超过最大的数则不可能用于凑数,进行下一轮循环,用一个for循环依次将每一个数用一遍,直至m=0为止。
具体代码实现如下:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin >> t;
for (int i = 0; i < t; i++)
{
int m, n;
cin >> n >> m;
int a[1000];
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
sort(a, a + n); // 将输入的数进行升序排序
int cnt = 0; // 用以统计数字量
for (int i = n - 1; i >= 0; i--) // 从大到小依次进行对比
{
if (m >= a[i]) // 大于m的数不可能用于凑m
{
cnt = (m / a[i]) + cnt; // 商即是要使用a[i]的次数
&nbs...
登录后发布评论
暂无评论,来抢沙发