【哈希映射】HDU-1280 前m大的数

在这里插入图片描述
在这里插入图片描述

注解

1、简单的哈希映射,把sum映射到对应位置。

代码

#include <iostream>
#include <cstring>

using namespace std;

const int MAXN = 10001;

int main() {

    int N, M;
    while(~scanf("%d %d", &N, &M)) {
        int a[N];
        int sum[MAXN];
        memset(sum, 0, sizeof(sum));
        for(int i=0; i<N; i++) {
            scanf("%d", &a[i]);
        }
        for(int i=0; i<N-1; i++) {
            for(int j=i+1; j<N; j++) {
                sum[a[i]+a[j]]++;
            }
        }
        for(int i=MAXN-1; i>=0; i--) {
            if(M>1 && sum[i]>0) {
                printf("%d ", i);
                sum[i]--;
                i++;
                M--;
            } else if(sum[i]>0) {
                printf("%d", i);
                break;
            }
        }
        printf("\n");
    }

    return 0;
}

结果

在这里插入图片描述

发布了475 篇原创文章 · 获赞 19 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/zhanggirlzhangboy/article/details/103748012