• 最小K个数之和


    描述

    输入n个整数,输出其中最小的K个数之和。例如输入4,5,1,1,6,2,7,3,39个数字,当k=4,则输出最小的4个数之和为71,1,2,3)。

    输入
    测试样例组数不超过10
    每个测试案例包括2行:
    第一行为2个整数n,k(1<=k<=n<=100000)
    第二行包含n个整数,每个整数的范围为【1~2000】
    输出
    对应每个测试案例,输出最小的k个数之和。
    样例输入
    8 4
    5 2 1 3 8 1 9 3
    样例输出
    7

     1 #include <stdio.h>
     2 #include <string.h>
     3 
     4 int main(){
     5     int flag[2001];
     6     int n;
     7     int k;
     8     int i;
     9     int number;
    10     int sum;
    11     
    12     while(scanf("%d%d",&n,&k)!=EOF){
    13         memset(flag,0,sizeof(int)*2001);
    14         
    15         for(i=0;i<n;i++){
    16             scanf("%d",&number);
    17             
    18             flag[number]++;
    19         }
    20         
    21         sum=0;
    22         for(i=1;i<=2000;i++){
    23             if(flag[i]!=0){
    24                 if(k>flag[i]){
    25                     sum+=flag[i]*i;
    26                     k-=flag[i];
    27                 }
    28                 else{
    29                     sum+=k*i;
    30                     break;
    31                 }
    32             }    
    33         }
    34         printf("%d
    ",sum);
    35     }
    36     return 0;
    37 }
     
  • 相关阅读:
    对软件工程的困惑
    团队作业(七)
    团队作业(六)
    团队作业(五)
    团队作业(四)
    团队作业(三)
    团队作业(二)
    团队作业(一)
    代码
    课余作业 采访
  • 原文地址:https://www.cnblogs.com/zqxLonely/p/4101344.html
Copyright © 2020-2023  润新知