九度oj 题目1034:寻找大富翁
题目链接:http://ac.jobdu.com/problem.php?pid=1034
- 题目描述:
-
浙江桐乡乌镇共有n个人,请找出该镇上的前m个大富翁.
- 输入:
-
输入包含多组测试用例.
每个用例首先包含2个整数n(0<n<=100000)和m(0<m<=10),其中: n为镇上的人数,m为需要找出的大富翁数, 接下来一行输入镇上n个人的财富值.
n和m同时为0时表示输入结束.
- 输出:
-
请输出乌镇前m个大富翁的财产数,财产多的排前面,如果大富翁不足m个,则全部输出,每组输出占一行.
- 样例输入:
-
3 1 2 5 -1 5 3 1 2 3 4 5 0 0
- 样例输出:
-
5 5 4 3
这个题目比较简单,思路:
如果n<=m则输入n个数到数组中,然后降序排序,接着直接输出;
若是n>m,则先输入前m个数到数组中。然后当每次输入一个数temp,则判断temp是否比数组中最小的数min大,若是则覆盖掉数组中最小数字min,否则跳过,输入下一个,然后继续……
输入并处理完成后,降序排序,然后输出即可。
代码如下:
1 #include<stdio.h> 2 #include<stdlib.h> 3 int cmp(const void *a,const void *b) 4 { 5 return *(int*)b- *(int *)a; 6 } 7 int finMinIndex(int a[],int len);//返回a数组最小元素的下标。a数组元素个数为len 8 int main() 9 { 10 int n,m; 11 int a[11]={0}; 12 int i; 13 int mini; 14 int temp; 15 16 while(scanf("%d%d",&n,&m)!=EOF) 17 { 18 if(n==0&&m==0) break; 19 if(n<=m) 20 { 21 for(i=0;i<n;i++) scanf("%d",&a[i]); 22 qsort(a,n,sizeof(a[0]),cmp); 23 printf("%d",a[0]); 24 for(i=1;i<n;i++) printf(" %d",a[i]); 25 printf("\n"); 26 } 27 else 28 { 29 for(i=0;i<m;i++) 30 { 31 scanf("%d",&a[i]); 32 } 33 for(i=m;i<n;i++) 34 { 35 scanf("%d",&temp); 36 mini=finMinIndex(a,m); 37 if(temp>a[mini]) a[mini]=temp; 38 } 39 qsort(a,m,sizeof(a[0]),cmp); 40 printf("%d",a[0]); 41 for(i=1;i<m;i++) printf(" %d",a[i]); 42 printf("\n"); 43 } 44 } 45 return 0; 46 } 47 int finMinIndex(int a[],int len)//返回a数组最小元素的下标。a数组元素个数为len 48 { 49 int i,minIndex=0; 50 for(i=1;i<len;i++) 51 { 52 if(a[i]<a[minIndex]) minIndex=i; 53 } 54 return minIndex; 55 }
分类:
OJ-九度
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App