程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> HDU 1280 前m大的數

HDU 1280 前m大的數

編輯:關於C語言

給定的N個整數序列, 兩兩求和,從大到小輸出M個和數。
因為所有整數不超過5000,則相加不會超過10000,可以
用哈希解決。  1 // 簡單哈希
 2 #include <stdio.h>
 3 #include <stdlib.h>
 4 #include <string.h>
 5 #include <algorithm>
 6 using namespace std;
 7
 8 const int maxn = 3005;
 9 int arr[maxn], sum[10001] ,n, m, x, y;
10 //因為所有的整數都不超過5000, 所以最大的和也不超過10000, sum數組開10001即可!
11
12 int main()
13 {
14     while (scanf("%d %d", &n, &m) != EOF)
15     {
16         arr[n];
17         for (int i=0; i<n; i++)
18         {
19             scanf("%d", &arr[i]);
20         }
21         memset(sum, 0, sizeof(sum));
22         for (int i=0; i<n-1; i++)
23         {
24             for (int j=i+1; j<n; j++)
25             {
26                 sum[arr[i] + arr[j]] ++;
27             }
28         }
29         int count = 0;
30         for (int j=10000; j>=0; j--)
31         {
32             if (sum[j])
33             {
34                 for (int i=0; i<sum[j]; i++)
35                 {
36                     count++;
37                     count == 1 ? printf("%d", j) : printf("%d", j);
38                     if (count == m)break;
39                     printf(" ");
40                 }
41             }
42             if (count == m) break;
43         }
44         printf("\n");
45     }
46 }
47

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved