思路
题意:给一组数组,每个数都不相同,求把每一个数两两相加,得到的相同的和的个数最多的是多大。 理解:首先每一个数都是不相同的,那么对于一个两个数的和,就对应两个不同的数,那么就意味着只要统计每一个可能的和个个数就可以,再求个数最大的哪一个和,就可以求解了
代码
#include <bits/stdc++.h>
#define INF 0x3f3f3f
using namespace std
;
const int mod
= 1e9 + 7;
const int Max_N
= 1e3 + 4;
const int Max_M
= 2e5 + 4;
typedef pair
<int, int>P
;
typedef long long ll
;
typedef unsigned long long ull
;
int ans
[Max_M
];
bool cmp(int a
, int b
)
{
return a
>b
;
}
int main(int argc
, char const *argv
[])
{
int n
, a
[Max_N
];
scanf("%d", &n
);
for (int i
= 1; i
<= n
; i
++)
{
scanf("%d", &a
[i
]);
}
for (int i
= 1; i
<= n
; i
++)
{
for (int j
= 1; j
<= n
; j
++)
{
if (i
== j
)
continue;
ans
[a
[i
] + a
[j
]]++;
}
}
sort(ans
, ans
+ Max_M
, cmp
);
printf("%d\n", ans
[0] / 2);
return 0;
}```
转载请注明原文地址: https://mac.8miu.com/read-496444.html