课堂练习之找水王

一、题目要求

    如果你有一张当前论坛的帖子列表,其中他帖子的作者ID也在其中,快速找出这个传说中的水王

二、解题思路

在遍历数组的时候保存两个值:一个是数组中的一个数字,一个是次数。当我们遍历到下一个数字的时候,如果下一个数字和我们之前保存的数字相同,则次数加1。 

如果下一个数字和我们之前保存的数字不同,则次数减1。如果次数为零,我们需要保存下一个数字,并把次数重新设为1。

三、程序源码

 1 #include<iostream>
 2 using namespace std;
 3 
 4 int Find(int *a,int N)   //a代表数组,N代表数组长度
 5 {
 6     int wk;
 7     int ntimes,i;
 8     for(i=ntimes=0;i<N;i++)
 9     {
10         if(ntimes==0)
11         {
12             wk=a[i],ntimes=1;
13         }
14         else
15         {
16             if(wk==a[i])
17                 ntimes++;
18             else
19                 ntimes--;
20         }
21     }
22     return wk;
23 }
24 
25 int main()
26 {
27     cout<<"水王的ID为:";
28     int a[5]={0,2,1,2,2};
29     int *n=a;
30     cout<<Find(a,5)<<endl;
31     return 0;
32 }

四、运行截图

posted @ 2015-04-21 14:53  yuji-5656  阅读(89)  评论(0编辑  收藏  举报