码迷,mamicode.com
首页 > 其他好文 > 详细

课堂练习—找水王(续)

时间:2015-05-01 00:30:27      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:

一、题目

  随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID。据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗

二、设计思路

  上次是每次删除两个ID,即如果两个ID不同则删除,相同则保留,这次参考原来问题的解法,如果按照数序删除四个完全不同的ID,那么,最后剩下的就是原先发帖比例大于1/4的ID。循环这个过程,把ID总数降低,从而得到问题的答案。

三、源代码

 

  #include<iostream.h>
  int main()
  {
    int ID[10]={1,2,3,4,1,3,4,1,3,4};
    int ID_NULL;//定义一个不存在的ID
    int shui[3];
    int flag[3];
    int i;
    shui[0]=shui[1]=shui[2]=0;
    flag[0]=flag[1]=flag[2]=ID_NULL;
    for(i=0;i<10;i++)
    {
      if(ID[i]==flag[0])
      {
        shui[0]++;
      }
      else if(ID[i]==flag[1])
      {
        shui[1]++;
      }
      else if(ID[i]==flag[2])
      {
        shui[2]++;
      }
      else if(shui[0]==0)
      {
        shui[0]=1;
        flag[0]=ID[i];
      }
      else if(shui[1]==0)
      {
        shui[1]=1;
        flag[1]=ID[i];
      }
      else if(shui[2]==0)
      {
        shui[2]=1;
        flag[2]=ID[i];
      }
      else
      {
        shui[0]--;
        shui[1]--;
        shui[2]--;
      }
    }
    cout<<"三个水王分别是:"<<endl;
    cout<<flag[0]<<" "<<flag[1]<<" "<<flag[2]<<endl;
    return 0;
  }

四、结果截图

技术分享

五、实验心得

  我记得在课上的时候,FD就想出了这个思路,但是我们不知道怎么去实现,然后搜索了实现方法,找到了解决的办法,其实也就在在上次实验的基础上,虽然想法成立,但是实现起来,需要注意的细节颇多。

  经验不能浪费,在做类似的题时应先想想原先的思路是否行得通,然后再去考虑别的方法,这样往往能节省不少时间。

 

课堂练习—找水王(续)

标签:

原文地址:http://www.cnblogs.com/yue3475975/p/4470153.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!