zoukankan      html  css  js  c++  java
  • 课堂练习--找“水王”

    一、题目要求

          现有一个灌水论坛,信息学院的学生都喜欢在上面交流灌水。传说在论坛上有一个“水王”,它不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目已超过了帖子数目的一半。

          如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者ID在其中,请设计算法快速找到这个传说中的“水王”。

    二、设计思路

         本题要求时间复杂度是o(n),我们可以设置一个计数器flag,和一个变量shuiwang存放当前的ID,当flag为0时,将arry[i]赋给shuiwang,否则,比较i和i+1,相等flag+1,不等flag-1。

    三、源代码

     1 #include "stdio.h"
     2 #define N 1000
     3  int main()
     4  {
     5      int arry[N],shuiwang,flag,num,i;
     6      printf("请输入ID的个数:");
     7      scanf("%d",&num);
     8      printf("请输入ID:
    ");
     9      for(i=0;i<num;i++)
    10      {
    11          scanf("%d",&arry[i]);
    12      }
    13      for(i=flag=0;i<num;i++)
    14      {
    15          if(flag==0)
    16          {
    17              shuiwang=arry[i],flag=1;
    18          }
    19          else
    20          {
    21              if(shuiwang==arry[i])
    22              {
    23                  flag++;
    24              }
    25              else
    26              {
    27                  flag--;
    28              }
    29          }
    30      }
    31      printf("这个“水王”的ID就是:");
    32      printf("%d
    ",shuiwang);
    33      return 0;
    34  }
    View Code

    四、结果截图

    五、实验心得

          课堂上,老师让我们先从简单的方法开始,先排序中间的就是水王,而后,加大难度,我觉得这种思维正是我们在编程过程中应该具备的,先实现基本功能,再优化代码。然后说说这道题目,开始绞尽脑汁都没有想到,后来老师说可以采用“消消”的方法,恍然大悟...再实现时却不是那么回事,我发现面对不同的情况消得对象不同,比如“1,1,1,1,2,2,2”和“1,2,1,2,1,2,1”就不同,后来又跟小伙伴商量,探讨,查资料,才找到了分情况的办法,锻炼了我们的思维能力。

  • 相关阅读:
    Thread系列之WaitHandle
    C# lock,Monitor 介绍(多线程并发控制)
    C#多线程学习(五) 多线程的自动管理(定时器)
    Thread系列之AutoResetEvent
    Thread系列之Thread.Sleep(0)
    (转)Java 内存模型
    哈希表(一)
    Java GC
    哈希表(二)
    图(一)
  • 原文地址:https://www.cnblogs.com/yuanyajiao/p/4448667.html
Copyright © 2011-2022 走看看