limu_ 2021-06-23 21:17 采纳率: 100%
浏览 51
已采纳

希望有人来接解释这段代码

题目描述
新年快到了,笑笑打算给他的好朋友们发贺年卡,而且他已经选好了自己要购买的贺卡的样式。俗话说得
好,货比三家,笑笑来到商店,看了各个商铺这种贺卡的价钱。不仅如此,笑笑还记住了每个商铺的存货
量。已知笑笑打算购买m张贺卡,问他最少花多少钱。
输入
第一行两个整数m和n。其中m表示要购买的贺卡的数量,n 表示商铺的个数。
以下n行,每行两个整数,分别表示该商铺这种贺卡的单价和存货量。
输出
仅一个数,表示笑笑花的最少钱数。
样例输入
10 4
4 3
6 2
8 10
3 6
样例输出
36


 

#include<bits/stdc++.h>

using namespace std;

struct node{ int a,b; }

t[1005]; int cmp(node a,node b)

{ return a.a>b.a; }

int main()

{ int n,m;int sum=0;

cin>>n>>m;

for(int i=1;i<=m;i++) {

cin>>t[i].a>>t[i].b; }

sort(t+1,t+1+m,cmp);

for(int i=m;i>=1;i--)

{ if(n>=t[i].b) {

n=n-t[i].b;

sum=sum+t[i].a*t[i].b; }

else { sum=sum+n*t[i].a;

break; } }

cout<<sum<<endl;

return 0; }

  • 写回答

1条回答 默认 最新

  • 老衲要还俗娶婆娘 2021-06-23 21:41
    关注
    #include <bits/stdc++.h>
    
    using namespace std;
    
    struct node
    {
        int a, b;
    }
    
    t[1005];
    int cmp(node a, node b)
    
    {
        return a.a > b.a;
    }
    
    int main()
    
    {
        int n, m;
        int sum = 0;
    
        cin >> n >> m;                  //输入需求量和店铺数
    
        for (int i = 1; i <= m; i++)
        {
            cin >> t[i].a >> t[i].b;        //输入单价和存货量
        }
    
        sort(t + 1, t + 1 + m, cmp);        //将数组t,按单价进行升序排序
    
        for (int i = m; i >= 1; i--)
    
        {           
            if (n >= t[i].b)        //需求量大于第i家店铺的库存量时,全部买下
            {
                n = n - t[i].b;         //需求量-第i家店铺的库存量
    
                sum = sum + t[i].a * t[i].b;        //总费用+=将第i家店铺库存量全部买下的费用
            }
    
            else
            {
                sum = sum + n * t[i].a;         //需求小于第i家库存量,说明这是最后一家,只需要买n件
    
                break;
            }
        }
    
        cout << sum << endl;
    
        return 0;
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 基于信创PC发布的QT应用如何跨用户启动后输入中文
  • ¥20 非root手机,如何精准控制手机流量消耗的大小,如20M
  • ¥15 远程安装一下vasp
  • ¥15 自己做的代码上传图片时,报错
  • ¥15 Lingo线性规划模型怎么搭建
  • ¥15 关于#python#的问题,请各位专家解答!区间型正向化
  • ¥15 unity从3D升级到urp管线,打包ab包后,材质全部变紫色
  • ¥50 comsol温度场仿真无法模拟微米级激光光斑
  • ¥15 上传图片时提交的存储类型
  • ¥15 VB.NET如何绘制倾斜的椭圆