九度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 }

 

相关文章
|
数据安全/隐私保护
[羊城杯 2020]easyre 1题解
buuctf-[羊城杯 2020]easyre 1题解
311 0
[羊城杯 2020]easyre 1题解
|
1月前
每日一题(珠玑妙算,两数之和)
每日一题(珠玑妙算,两数之和)
16 1
|
3月前
蓝桥备战--分糖果OJ2928 贪心 分类讨论
蓝桥备战--分糖果OJ2928 贪心 分类讨论
33 0
|
11月前
三道好题分享
上课睡觉 - AcWing题库
58 0
|
12月前
|
机器学习/深度学习 算法
【第十五届蓝桥杯备赛(bushi,写文凑个数)】蓝桥OJ---长草
文章目录 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 三、知识风暴 BFS Flood Fill算法
147 0
|
12月前
(数论)蓝桥杯AcWing 1205. 买不到的数目
(数论)蓝桥杯AcWing 1205. 买不到的数目
34 0
|
Go 索引
LeetCode每日一题(6)——山羊拉丁文
山羊拉丁文 1.题目 2.示例 3.思路 4.代码 5.复杂度分析
109 0
|
索引
LeetCode每日一题——824. 山羊拉丁文
给你一个由若干单词组成的句子 sentence ,单词间由空格分隔。每个单词仅由大写和小写英文字母组成。
88 0
|
定位技术 C++