九度oj 题目1034:寻找大富翁

简介: 题目链接:http://ac.jobdu.com/problem.php?pid=1034 题目描述:     浙江桐乡乌镇共有n个人,请找出该镇上的前m个大富翁. 输入:     输入包含多组测试用例.

题目链接: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

来源:2009年浙江大学计算机及软件工程研究生机试真题

这个题目比较简单,思路:

如果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 }

 

相关文章
|
关系型数据库 数据库 数据管理
DTS的应用
【6月更文挑战第3天】DTS的应用
986 3
|
存储 固态存储 算法
浅析数据中心存储发展趋势
产生的这些巨量数据,存储的归宿在哪里呢?随着发展趋势,个人本地存储的需求越来越小,公有云的数据存储量将会有迅速的攀升。
|
算法 前端开发 安全
SpringCloud Gateway API接口安全设计(加密 、签名、安全)(一)
SpringCloud Gateway API接口安全设计(加密 、签名、安全)(一)
SpringCloud Gateway API接口安全设计(加密 、签名、安全)(一)
|
Windows
如何查看某个端口被谁占用
我们在启动应用的时候经常发现我们需要使用的端口被别的程序占用,但是我们又不知道是被谁占用,这时候我们需要找出“真凶”,如何做到呢? 工具/原料 电脑一台 方法/步骤 开始---->运行---->cmd,或者是window+R组合键,调出命令窗口 输入命令:netstat -ano,列出所有端口的情况。
1413 0
|
11天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
9天前
|
存储 人工智能 搜索推荐
终身学习型智能体
当前人工智能前沿研究的一个重要方向:构建能够自主学习、调用工具、积累经验的小型智能体(Agent)。 我们可以称这种系统为“终身学习型智能体”或“自适应认知代理”。它的设计理念就是: 不靠庞大的内置知识取胜,而是依靠高效的推理能力 + 动态获取知识的能力 + 经验积累机制。
342 130
|
9天前
|
存储 人工智能 Java
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
本文讲解 Prompt 基本概念与 10 个优化技巧,结合学术分析 AI 应用的需求分析、设计方案,介绍 Spring AI 中 ChatClient 及 Advisors 的使用。
430 130
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话