一、设计思路:

  每次删除两个不同的ID(不管是否包含水王ID),那么,在剩下的ID列表中,水王

ID出现的次数仍然超过总数的一半。

  所以即每次删除两个不同的ID,最后剩下的ID就是水王ID

二、代码实现:

package 水王是谁;

public class Shuiwangshishei {

    public static int jishu(int p[], int n)
    {      
        int a=0,b=0;
        for(int i=0; i<n; ++i)
        {          
            if(a==0 || b==0)
            {              
                a=p[i];
                b++;
            }
            else if(p[i]==a) b++;
            else b--;     
        }      
        return a;//此a即为“水王”的ID }
    }
    public static void main(String args[])
    {
        //以13个数代表13个帖子,每个数字代表分别的发帖人
        int a[]={1,3,3,4,3,5,2,2,3,7,3,3,3};
        int n=a.length;
        int shuiwangID=jishu(a,n);
        System.out.println("水王是"+shuiwangID);
    }
}

 

三、实验截图:

 

四、个人总结

  本题的重点是将大问题转化成小问题,即把问题缩小化,在参考了网络资料后豁然开朗。思维还有待锻炼。