课堂练习-----查找水王

 查找水王id

一、设计思路

      题目要求:

      三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?

     设计思路:

        在水王发帖数目超过了帖子数目一半的前提下,将id表中每相邻两条帖子的id进行比较,若两个id不相同,则直接过滤掉,按照这种方法,最后留下的id就是水王的id。

二、程序源代码   

 1 // shuiwang.cpp : Defines the entry point for the console application.
 2 //
 3 
 4 #include "stdafx.h"
 5 #include<iostream.h>
 6 int find(int arr[],int num)
 7 {
 8     int shuiwang;
 9     int x;
10     for(int i=x=0;i<num;i++)
11     {
12         if(x==0)
13         {
14             shuiwang=arr[i],x=1;
15         }
16         else
17         {
18             if(shuiwang==arr[i])
19             {
20                 ++x;
21             }
22             else
23             {
24                 --x;
25             }
26         }
27     }
28     printf("这个“水王”的ID就是:");
29     printf("%d
",shuiwang);
30     return shuiwang;
31 }
32     
33 int main(int argc, char* argv[])
34 {
35     int arry[7]={1,2,1,3,1,4,1};
36     find(arry,7);
37     return 0;
38 }

三、运行结果截图

    

四、总结

      在本次查找水王的id时,我借鉴了网上关于水王查找的思想。在自己设计思路时,总是没办法找到一个很好的办法去实现相邻的两个id的比较和数据的过滤,很让人苦恼,后来看到别人通过设定中间变量的方法来实现,顿时恍然大悟,觉得妙不可言,也对自己的思维进行了变通,得到一定的进步。

原文地址:https://www.cnblogs.com/mudanhuakai/p/4446972.html