找水王

设计思路:
根据题目得到了以下信息:
1.水王会回复每个ID的发的帖子
2.水王发帖数超过了论坛帖子数目的一半
 
在这其中,可以看到很重要的一点:水王发帖数超过了总帖数的一半!
那么,可以想象得到:假设我们知道水王的ID,且有一个变量n初始为0的数,要是每次看到水王的ID就+1,不是就-1,这样一来,看完一遍所有的ID,这个初始数值一定大于0;
更进一步来思考:我们现在不知道水王的ID,初始化为第一个发帖人,将其看作是水王ID,那么进行第一步,当n小于0时,将水王的ID更新为当前的ID,视为水王;如此进行,遍历一遍之后点找到了水王。
 
其实,运用这种方法,在每次n小于0更新ID时,意义上就将该ID视为+1,其他的ID均为-1,这样一来就是将该ID分离了出来,实现了计算该ID出现的次数。
代码

#include<iostream>

#include<string>

 

using namespace std;

 

void main()

{    

         int n = 0;

         int s;

         string a[100], m;

 

         cout << "请输入总贴数:";

         cin >> s;

        

         cout << "输入每个帖子的ID:";

         for (int i = 0; i < s; i++)

         {

                   cin >> a[i];

         }

        

         m = a[0];

        

         for (int i = 0; i < s; i++)

         {

                   if (m == a[i])

                   {

                            n += 1;

                   }

                   else

                            n -= 1;

                  

                   if (n < 0)

                   {

                            m = a[i];

                   }

         }

        

         cout << "水王是:" << m << endl;

 

}

截图:

编程总结:

经过这一次的编程让我认识到:一个好的程序最重要的一点就是 好的设计思路 ;它可以有效地提高程序的效率。

而且,我们不能仅仅局限在一种思路中,有时候,换个思路会是一片不一样的天空!

原文地址:https://www.cnblogs.com/D9412/p/4520612.html