hdoj1029(基础DP)

来源:互联网 发布:网络歌手萧风 编辑:程序博客网 时间:2024/06/11 18:39

题目:杭电oj1029

题意:给N个数(N为奇数)问,那个数至少出现了(N+1)/2遍(PS.这个数是一定会存在的虽然题目没说有)

思路:先排序,因为至少出现了(N+1)/2遍,而且已经排好序了,直接检查i与第(N+1)/2是否相同就行了,相同则   退出。

#include<iostream>#include<cstdio>#include<vector>#include<algorithm>using namespace std;int main(){vector<int>ss;int n;while(~scanf("%d",&n)){for(int i=0;i<n;i++){int x;scanf(" %d",&x);ss.push_back(x);}sort(ss.begin(),ss.end());//排序for(int i=0;i<=(n+1)/2;i++)//只检查到(n+1)/2后面不可能有了。{if(ss[i]==ss[i+(n+1)/2-1]){printf("%d\n",ss[i]);break;}}ss.clear();}}