zoukankan      html  css  js  c++  java
  • 基础实验7-2.1 魔法优惠券 (25分)-qsort()

     

     解题思路:

    1、优惠券和商品价值按降序排序(选用c自带的qsort函数,最后一个测试点才没有超时,自己写的快排超时了,堆排没有试)

    2、先从前往后找,优惠券和商品价值相乘为正的,累计在sum里

        同理,再从后往前找优惠券和商品价值相乘为正的,累计在sum里

    #include <stdio.h>
    #include <string.h>
    int cmp(const void *a,const void *b) {
        return *(int *)b-*(int *)a;
    }
    int main() {
        int n;
        scanf("%d",&n);
        int i,j;
        int a[n];
        memset(a,0,sizeof(a));
        for(i=0; i<n; i++) {
            scanf("%d",&a[i]);
        }
        qsort(a,n,sizeof(int),cmp);
        int m;
        scanf("%d",&m);
        int b[m];
        memset(b,0,sizeof(b));
        for(i=0; i<m; i++) {
            scanf("%d",&b[i]);
        }
        qsort(b,m,sizeof(int),cmp);
        int sum=0;
        int p1=0,q1=n-1;
        int p2=0,q2=m-1;
        while(p1<=q1&&p2<=q2) {//从前往后
            if(a[p1]*b[p2]>0) {
                sum+=a[p1]*b[p2];
                p1++;
                p2++;
            } else
                break;
        }
        while(p1<=q1&&p2<=q2) {//从后往前
            if(a[q1]*b[q2]>0) {
                sum+=a[q1]*b[q2];
                q1--;
                q2--;
            } else
                break;
        }
        printf("%d",sum);
        return 0;
    }
  • 相关阅读:
    Android学习——day13
    寒假周总结三
    构建之法读书笔记03
    Android学习——day12
    每日日报2020 11/18
    每日日报2020 11/17
    每日日报2020 11/16
    每日日报2020 11/15
    每日日报2020 11/13
    每日日报2020 11/12
  • 原文地址:https://www.cnblogs.com/snzhong/p/12493893.html
Copyright © 2011-2022 走看看