难易程度:简单
描述
一天,聪明王在家中写作业,一共有n门课的作业,现在他知道自己写完每门作业的时间。他的妈妈可能随时会回来,他想在他的妈妈回来时尽可能的写完多的科目(显得自己很努力),他该如何安排写作业的顺序呢?聪明的你帮他安排一下吧。
输入
第一行输入一个数n,接下来n行,每行有两个输入,第一个是科目名称,第二个是一个整数x,表示完成这门课所需要时间。1≤n≤10 6,1≤x≤10 6 ,输入保证科目名称不会超过100个字符、各科目所需的时间都不相同
输出
输出一行,n个科目名称,代表完成作业的顺序
题解:
算法思想:结构体排序
据题意:先做完时间短的作业,因此只需对时间排序即可。(PS:注意所给的数据范围,时间复杂度不超过O(Nlogn)
#include <stdio.h>
#include <stdlib.h>typedef struct {int time;char name[105];
}subject;//创建结构体
subject num[1000005];//结构体数组int cmp(const void* a, const void* b)
{return ((subject*)a)->time - ((subject*)b)->time;
}
int main()
{int n;scanf("%d", &n);for (int i = 0; i < n; ++i) {scanf("%s%d", num[i].name, &(num[i].time));}//排序函数对结构体中的time进行排序qsort(num
本文发布于:2024-02-08 19:40:26,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170739246168374.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |