您的位置:首页 > 其它

FatMouse' Trade

2014-04-05 08:54 295 查看
#include <iostream>

#include <cstdlib>

using namespace std;

struct node // 节点

{

int JavaBean; // 每个房间里面所拥有的 javabean 的重量

int Cat; // 所需要的猫食重量

double Value; // 每磅猫食可以获得的 javabean;

};

// 利用 qsort 对 节点按照 Value 的大小进行排序

// 编写 cmp 函数

int cmp(const void *a,const void *b)

{

if (((node*)a)->Value > (((node*)b)->Value))

{

return -1;

}

else if (((node*)a)->Value < (((node*)b)->Value))

{

return 1;

}

else

{

return 0;

}

}

int main()

{

int Mcat = 0; // 猫食的总重量

int Nrooms = 0; // 有 n 个房间

double JavaBean = 0; //

node *pointer;

// while loop

while(1)

{

cin >> Mcat >> Nrooms;

if (Mcat == -1 && Nrooms == -1) // 当 Mcat 和 Nrooms 的值都为 -1 时, 程序结束

{

break;

}

JavaBean = 0;

pointer = new node[Nrooms];

for (int i = 0; i < Nrooms; ++i)

{

cin >> pointer[i].JavaBean >> pointer[i].Cat;

pointer[i].Value = (double)pointer[i].JavaBean / (double)pointer[i].Cat;

}

// 使用快速排序对节点进行排序

qsort(pointer, Nrooms, sizeof(pointer[0]), cmp);

for (i = 0; i < Nrooms; i++)

{

if (Mcat > 0 && Mcat >= pointer[i].Cat)

{

JavaBean += (double)pointer[i].JavaBean;

}

else if (Mcat > 0 && Mcat < pointer[i].Cat)

{

JavaBean += ((double)Mcat / (double)pointer[i].Cat) * (double)pointer[i].JavaBean;

break;

}

Mcat = Mcat - pointer[i].Cat;

}

printf("%0.3lf\n", JavaBean);

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: