设为首页 加入收藏

TOP

HDU 1280 前m大的数
2014-11-23 22:53:54 来源: 作者: 【 】 浏览:2
Tags:HDU 1280

给定的N个整数序列, 两两求和,从大到小输出M个和数。
因为所有整数不超过5000,则相加不会超过10000,可以
用哈希解决。 1 // 简单哈希
2 #include
3 #include
4 #include
5 #include
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 18 {
19 scanf("%d", &arr[i]);
20 }
21 memset(sum, 0, sizeof(sum));
22 for (int i=0; i 23 {
24 for (int j=i+1; 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 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

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇空对象模式---函数需要返回一个无.. 下一篇用C语言读取大文件的问题--内存映..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: