最少硬币问题求解

萌萌的小张飞 2021-04-13 07:11:50


求大神看一下哪里有问题呢?谢谢
...全文
155 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
qzjhjxj 2021-04-13
  • 打赏
  • 举报
回复
建议楼主别贴图片,贴代码更方便。供参考:
#include<iostream.h>
#include<algorithm.h>

using namespace std;

typedef struct{
        int T;  //面值
        int C;  //硬币个数
}Node;

bool compare(Node &a,Node &b)
{
    return a.T < b.T;
}

int seek(Node *p,int n,int m)
{
    int q=m;
    int t;
    int sum=0;
    int i;
    for(i=n-1;i>=0;i--) //for(i=n;i>=0;i--)数组下标越界
    {
        t=(q/p[i].T);
        if(t>p[i].C) t=p[i].C;//不能超过所持有的当前面值的硬币个数
        q-=t*p[i].T;
        sum += t;
        if(q==0) break;
    }
    if(q==0)
    {
       return sum;
    }else{
       return -1;
    }
}

int main()
{
    int n;
    cin>>n;
    //Node a[n];
    Node *a =new Node[n];
    int i;
    for(i=0;i<n;i++)
    {
        cin>>a[i].T>>a[i].C;
    }
    int m;
    cin>>m;

    sort(a,a+n,compare);
    int p=seek(a,n,m);
    if(p>0)
    {
        cout<<p;
    }else{
        cout<<"-1";
    }
    
    return 0;
}

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧