zoukankan      html  css  js  c++  java
  • nyist 95 众数问题

    众数问题

    时间限制:3000 ms  |  内存限制:65535 KB
    难度:3
    描述

    所谓众数,就是对于给定的含有N个元素的多重集合,每个元素在S中出现次数最多的成为该元素的重数,

    多重集合S重的重数最大的元素成为众数。例如:S={1,2,2,2,3,5},则多重集S的众数是2,其重数为3。

    现在你的任务是:对于给定的由m个自然数组成的多重集S,计算出S的众数及其重数。

    输入
    第一行为n,表示测试数据组数。(n<30)
    每组测试的第一行是一个整数m,表示多重集S中元素的个数为m
    接下来的一行中给出m(m<100)个不大于10万的自然数
    (不会出现不同元素出现的次数相同的情况,如:S={11,11,22,22,33,33})。
    输出
    每组测试数据输出一行,包含两个数,第一个是众数,第二个是其重数,中间以空格隔开。
    样例输入
    1
    6
    1 2 2 2 3 5
    样例输出
    2 3
    
    这题首先我们使用sort进行排序,
    然后for循环判断,
    找相同的数的个数,然后在主循环中加上这个k值,
    就是
    for(i = 0; i < n; i += j)
      {
        k = 1;
        tmp = a[i];
        for(j = i+1; j < n; j++)
          {
             if(a[j] == tmp )
              k++;
              else
              break;
          }
        //这里进行值得判断,保存我们需要的值
      }

     1 #include <cstdio>
     2 #include <iostream>
     3 #include <algorithm>
     4 #include <cstring>
     5 
     6 using namespace std;
     7 
     8 #define MAX 1000000
     9 
    10 int a[105];
    11 
    12 int main()
    13 {
    14     int T;
    15     scanf("%d",&T);
    16     while(T--)
    17     {
    18         memset(a,0,sizeof(a));
    19         int n;
    20         scanf("%d",&n);
    21         int i = 0;
    22         for(i = 0; i < n; i++)
    23             scanf("%d",&a[i]);
    24             sort(a,a+n);
    25         int min = -MAX;
    26         int min_x = -MAX;
    27 
    28         int tmp = 0;
    29         int j = 0;
    30         int k = 0;
    31         for(i = 0; i < n ;i+= k)
    32             {
    33                 tmp = a[i];
    34                 k = 1;
    35                 for(j = i+1; j < n ; j++)
    36                 {
    37                     if(tmp == a[j])
    38                         k++;
    39                     else break;
    40                 }
    41 
    42                 if(k > min_x)
    43                   {
    44                       min_x = k;
    45                       min = tmp;
    46                   }
    47                 if(k == min_x)
    48                 {
    49                     if(min < tmp)
    50                       {
    51                           min = tmp;
    52                       }
    53                 }
    54             }
    55     printf("%d %d\n",min,min_x);
    56     }
    57     return 0;
    58 }
  • 相关阅读:
    同表自更新
    C#数据层添加事务功能
    Mysql 索引 分区 面试题
    Spring 循环依赖
    Zipkin初探 + 与SpringBoot的集成+ 使用HTTP方式传送数据给zipkin server
    Web调优之IBM JDK+liberty(二),原来都是UUID惹得祸
    Web调优之IBM JDK+liberty(一): Jmeter pod里压,50个线程并发测试,调整 -Xms -Xms, Log原来是大问题
    Linux使用jstat命令查看jvm的GC情况
    VM内存回收System.gc()
    prometheus 文档合集
  • 原文地址:https://www.cnblogs.com/yyroom/p/3024113.html
Copyright © 2011-2022 走看看