HDU - 1029 Ignatius and the Princess IV

xiaoxiao2021-02-28  134

题目大意:给出奇数个数,输出这些数中出现 (N+1)/2 次数的数。 解题思路:直接排序取中间的数即可,因为是奇数个数,出现 (N+1)/2 次的数已经超过一半,一定会出现在中位数上。

#include<iostream> #include<stdio.h> #include<algorithm> #include<cmath> #include<string.h> #include<string> #include<queue> #include<map> #define max(a,b) ((a)>(b)?(a):(b)) #define min(a,b) ((a)<(b)?(a):(b)) const int INF = 0x3f3f3f3f; const int NINF = -INF -1; const int MAXN = 999999+5; using namespace std; int N; int num[MAXN]; int main() { while (scanf("%d", &N) != EOF) { for (int i = 0; i < N; i++) scanf("%d", &num[i]); sort(num, num+N); printf("%d\n", num[N/2]); } return 0; }
转载请注明原文地址: https://www.6miu.com/read-26256.html

最新回复(0)