课堂练习-----查找水王
查找水王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\n",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的比较和数据的过滤,很让人苦恼,后来看到别人通过设定中间变量的方法来实现,顿时恍然大悟,觉得妙不可言,也对自己的思维进行了变通,得到一定的进步。