早教吧 育儿知识 作业答案 考试题库 百科 知识分享

C++程序编程Description麦兜是个淘气的孩子.一天,他在玩钢笔的时候把墨水洒在了白色的墙上.再过一会,麦兜妈就要回来了,麦兜为了不让妈妈知道这件事情,就想用一个白色的凸多边形把墙上的

题目详情
C++ 程序编程
Description 麦兜是个淘气的孩子.一天,他在玩钢笔的时候把墨水洒在了白色的墙上.再过一会,麦兜妈就要回来了,麦兜为了不让妈妈知道这件事情,就想用一个白色的凸多边形把墙上的墨点盖住.你能告诉麦兜最小需要面积多大的凸多边形才能把这些墨点盖住吗?现在,给出了这些墨点的坐标,请帮助麦兜计算出覆盖这些墨点的最小凸多边形的面积.Input 多组测试数据.第一行是一个整数T,表明一共有T组测试数据.每组测试数据的第一行是一个正整数N(0< N < = 105),表明了墨点的数量.接下来的N行每行包含了两个整数Xi和Yi(0<=Xi,Yi<=2000),表示每个墨点的坐标.每行的坐标间可能包含多个空格.Output 每行输出一组测试数据的结果,只需输出最小凸多边形的面积.面积是个实数,小数点后面保留一位即可,不需要多余的空格.Sample Input 2 4 0 0 1 0 0 1 1 1 2 0 0 0 1 Sample Output 1.0 0.0 麻烦帮帮忙咯
▼优质解答
答案和解析
看一下这个程序可以不:
#include
#include
using namespace std;
struct Stu
{
int total, china, math, engl, ID;
};
int MyCompare(const void *e1, const void *e2)
{
Stu *p1 = (Stu*) e1; Stu *p2 = (Stu*) e2;
if(p1->total != p2->total)
return p1->total < p2->total;
if(p1->china != p2->china)
return p1->china < p2->china;
return p1->ID > p2->ID;
}
int main()
{
Stu stu[100];
int n, i;
cin >> n;
for(i = 0; i < n; i++){
cin >> stu[i].china >> stu[i].math >> stu[i].engl;
stu[i].ID = i + 1;
stu[i].total = stu[i].china + stu[i].math + stu[i].engl;
}
qsort(stu, n, sizeof(Stu), MyCompare);
for(i = 0; i < n; i++)
cout << stu[i].ID << " " << stu[i].total << endl;
return 0;
}
我可以帮助你,你先设置我最佳答案后,我百度Hii教你.