九度 1057 众数

来源:互联网 发布:samba 软件 编辑:程序博客网 时间:2024/06/05 08:59

题目来源:http://ac.jobdu.com/problem.php?pid=1057

#include <iostream>#include <cstdio>#include <cstring>using namespace std;struct Node{    int num;    int kcount;    Node()    {        num = 0;        kcount = 0;    }};int main(){    int i, a, maxn, iNum;    Node arr[21];    while(~scanf("%d", &a))    {        memset(arr, 0, sizeof(arr));        arr[a].kcount = 1;        maxn = 1;        iNum = a;        for(i = 1; i < 20; ++i)        {            scanf("%d", &a);            arr[a].kcount++;            if(arr[a].kcount == maxn)//如果众数存在相同,则找出权值最小的            {                if(a < iNum)                    iNum = a;            }            else if(arr[a].kcount > maxn)//找出众数            {                iNum = a;                maxn = arr[a].kcount;            }        }        printf("%d\n", iNum);    }    return 0;}

map方法,同样道理,一个简单的映射。

#include <cstdio>#include <cstring>#include <iostream>#include <map>using namespace std;int main(){    map <int, int> NumTime;    int a, i, iNum, maxn;    while(~scanf("%d", &a))    {        NumTime.clear();        NumTime[a]++;        iNum = a;        maxn = 1;        for(i = 1; i < 20; ++i)        {            cin>>a;            NumTime[a]++;            if(NumTime[a] == maxn)            {                if(a < iNum)                    iNum = a;            }            else if(NumTime[a] > maxn)            {                maxn = NumTime[a];                iNum = a;            }        }        printf("%d\n", iNum);    }    return 0;}


0 0
原创粉丝点击