结构体二级排序,注意保质期只有5天就行。

CODE:

结构体二级排序(快速)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <algorithm>
using namespace std;

const int SIZE = 101 + 10;

struct node
{
    char str[110];
    int p, v;
    double r;
}a[SIZE];

int cmp(const void *a, const void *b)
{   
    node *p1 = (node*)a;
    node *p2 = (node*)b;
    if(p1->r != p2->r) return p1->r - p2->r > 0 ? 1:-1;     //注意这里要用p1->r - p2->r > 0 ? 1:-1,因为这是double类型的数据,否则会报错。
    else return p2->v - p1->v;
}

int main()
{
    int i, j;
    int T;
    scanf("%d", &T);
    while(T--)
    {
        int N;
        scanf("%d", &N);
        memset(a, 0sizeof(a));
        for(i = 0 ; i < N; i++)
        {
            scanf("%s%d%d", a[i].str, &a[i].p, &a[i].v);
        }
        for(i = 0 ; i < N; i++)
        {
            int d = a[i].v/200;
            if(d > 5)
            {
                a[i].r = 1.0*a[i].p/5;
            }
            else
            {
                a[i].r = 1.0*a[i].p/d;
            }
        }
        qsort(a, N, sizeof(a[0]), cmp);
        printf("%s\n", a[0].str);
    }
    return 0;

} 

 

CODE:

结构体二级排序(sort)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <algorithm>
using namespace std;

const int SIZE = 101 + 10;

struct node
{
    char str[110];
    int p, v;
    double r;
}a[SIZE];

int cmp(const node &a, const node &b)
{   
    return  (a.r < b.r || (a.r == b.r && a.v > b.v));    //qsort用‘-’,而sort用‘>’。
}

int main()
{
    int i, j;
    int T;
    scanf("%d", &T);
    while(T--)
    {
        int N;
        scanf("%d", &N);
        memset(a, 0sizeof(a));
        for(i = 0 ; i < N; i++)
        {
            scanf("%s%d%d", a[i].str, &a[i].p, &a[i].v);
        }
        for(i = 0 ; i < N; i++)
        {
            int d = a[i].v/200;
            if(d > 5)
            {
                a[i].r = 1.0*a[i].p/5;
            }
            else
            {
                a[i].r = 1.0*a[i].p/d;
            }
        }
        sort(a, a+N, cmp);
        printf("%s\n", a[0].str);
    }
    return 0;
}

posted on 2012-07-15 21:12  有间博客  阅读(144)  评论(0编辑  收藏  举报