zoukankan      html  css  js  c++  java
  • 课堂练习—找水王(续)

    一、题目

      随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的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就想出了这个思路,但是我们不知道怎么去实现,然后搜索了实现方法,找到了解决的办法,其实也就在在上次实验的基础上,虽然想法成立,但是实现起来,需要注意的细节颇多。

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

  • 相关阅读:
    [转]Java连接oracle数据库实例
    class.forname().newInstance()
    使用jdbc调用Oracle报错:ORA00911 无效字符
    使用HttpWebRequest需要设置Accept和UserAgent属性
    IIS应用程序池(进程池)假死问题解决办法
    windows调试工具集
    广东电信最新DNS更新了
    Web2.0样式
    一个开源的flash幻灯片展示源码文件
    Microsoft Visio2003 简体中文版 下载
  • 原文地址:https://www.cnblogs.com/yue3475975/p/4470153.html
Copyright © 2011-2022 走看看