本文主要是介绍西安邮电大学2020.12.19ACM新生赛题解(部分),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
西安邮电大学2020.12.19ACM新生赛题解(部分)
A题:永远的王聪明王
难易程度:简单
描述
一天,聪明王在家中写作业,一共有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
这篇关于西安邮电大学2020.12.19ACM新生赛题解(部分)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!