Mike and Children

mac2024-10-07  44

思路

题意:给一组数组,每个数都不相同,求把每一个数两两相加,得到的相同的和的个数最多的是多大。 理解:首先每一个数都是不相同的,那么对于一个两个数的和,就对应两个不同的数,那么就意味着只要统计每一个可能的和个个数就可以,再求个数最大的哪一个和,就可以求解了

代码

#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; }```
最新回复(0)