0
点赞
收藏
分享

微信扫一扫

PAT乙级-1020 月饼-C语言实现(33行AC)

booksmg2014 2022-04-13 阅读 88

考察知识点:

1.数学知识运用

2.根据题目设置合理的结构

#include<stdio.h>
#include<stdlib.h>
typedef struct{//由于每种月饼的销售量与库存量一一对应,如果设置两个数组对其中一个排序会无法对应致错,故设置月饼的结构体数组
    double a,b;
}wxxpp;
int cmp(const void *a,const void *b){//设置快排函数对月饼的每吨单价从大到小排序
    return (*(wxxpp *)a).b-(*(wxxpp *)b).b>0?-1:1;//注意单纯的相减出现如0.1的情况会自动转换为整型的0,故要与0比较
}
int main(void){
    int i,N,D;
    wxxpp wxx[1000];//根据题目的范围设置大小
    double max;//储存最大销售量
    scanf("%d %d",&N,&D);
    for(i=0;i<N;i++)
    scanf("%lf",&wxx[i].a);
    for(i=0;i<N;i++){
        scanf("%lf",&wxx[i].b);
        wxx[i].b/=wxx[i].a;//储存该种月饼每吨的价格
    }
    qsort(wxx,N,sizeof(wxxpp),cmp);
    for(i=0,max=0;i<N;i++){
        if(D>wxx[i].a){//每次将剩余需求量与该种月饼最大库存量比较
            D-=wxx[i].a;
            max+=wxx[i].a*wxx[i].b;
        }
        else{//不足则求剩余需求量的最大销售额
            max+=D*wxx[i].b;
            break;
        }
    }
    printf("%.2lf",max);//按格式输出
    return 0;
}
举报

相关推荐

0 条评论