返回题解分享
讨论 / 题解分享/ 帖子详情

纸币问题 - 题解

麻烦看看有什么可以优化👀️

#include <bits/stdc++.h>
using namespace std;

int main()
{
    //输入n张纸币,凑成m元,n赋给cir
    int n, m, cir;
    cin >> n >> m;
    cir = n;
    //初始化money数组来接收面额
    int money[n] = {0};
    while(cir)
    {
        cin >> money[n-cir];
        cir--;
    }
    //简单排个序
    sort(money, money+n);
    //从最高面额往下凑
    int i = 1, num[n] = {0}, l = n, com;
    //大循环是怕3*5这样的例子出现
    //不然从最高往下凑会有11的影响
    for(;l;l--)
    {
        com = m;
        i = 1;
        for(int j = 0; j < l; j++)
        {
            while(com/money[l-i])
            {
                num[n-l]++;
                com -= money[l-i];
            }
            i++;
        }
    }
    //找最小值
    int* max1 = min_element(num, num+n);
    cout << *max1;

}
0 回复 0 转发 0 喜欢 3 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!