zoukankan      html  css  js  c++  java
  • HDU 1280 前m大的数【哈希入门】

    题意:中文的题目= =将各种组合可能得到的和作为下标,然后因为不同组合得到的和可能是一样的,

    所以再用一个数组num[]数组,就可以将相同的和都记录下来

     1 #include<iostream>  
     2 #include<cstdio>  
     3 #include<cstring> 
     4 #include <cmath>   
     5 #include<algorithm>  
     6 using namespace std;
     7 
     8 typedef long long LL;
     9 int hash[10005],a[10005],num[10005];
    10 
    11 int main()
    12 {
    13     int n,m,i,j,k;
    14     while(scanf("%d %d",&n,&m)!=EOF)
    15     {
    16         memset(hash,0,sizeof(hash));
    17         memset(num,0,sizeof(num));
    18         for(i=1;i<=n;i++) cin>>a[i];
    19                 
    20         for(i=1;i<=n;i++){
    21             for(j=i+1;j<=n;j++)
    22             hash[a[i]+a[j]]++;//将各种相加可能出现的数作为下标 
    23         }
    24             
    25         for(i=10000,k=0;k<m;i--){
    26             while(hash[i]--) num[k++]=i;
    27         }
    28         
    29         
    30         
    31         for(i=0;i<m;i++){
    32             if(i!=m-1) printf("%d ",num[i]);
    33             else printf("%d",num[i]);
    34         }
    35         printf("
    ");        
    36     }
    37     return 0;
    38 }
    View Code
  • 相关阅读:
    Hibernate---对象的三种状态
    grunt+bower依赖管理
    grunt 的安装和简单使用
    sqlserver dmv 动态管理视图
    ado.net 数据库连接池
    桥接模式
    .net MVP
    主定理(分治算法)
    图中环的判断
    选举协议paxos 协议 理解
  • 原文地址:https://www.cnblogs.com/wuyuewoniu/p/4314573.html
Copyright © 2011-2022 走看看