设计思想:

     既然三个水龙王每个的发帖数大于四分之一,那就四个帖子一组,假设前三个ID为水龙王,两个数组,一个记录三个水龙王ID,一个记录三个水龙王各自ID数目,将每个ID与假设龙王的ID相比较,如相同,则在相同的龙王ID总数加一,若与三个假设龙王都不相同,则假设的三个龙王各自总数减一,直到减为0,更换龙王ID。

代码实现:    

import java.util.Scanner;

public class Longwang2 {

  public static void main(String []args){

     Scanner reader=new Scanner(System.in);

     System.out.println("请输入ID总数:");

     int sumID=reader.nextInt();

     int ID[]=new int[sumID];//存储所有ID的数组ID[]

     System.out.println("请依次输入ID:");

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

     {

        ID[i]=reader.nextInt();

     }

     int LongWang[]=new int[3]; //数组LongWang[]储存三个龙王ID

     int countLong[]=new int[3];//数组countLong[]存储三个龙王ID各自总数

     countLong[0]=countLong[1]=countLong[2]=0;//初始化龙王ID各自总数为0

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

     {

        if(countLong[0]==0)  //假设前三个帖子ID是龙王

        {

            LongWang[0]=ID[i];

           countLong[0]++;

        }

        else if(countLong[1]==0)

        {

           LongWang[1]=ID[i];

           countLong[1]++;

        }

        else if(countLong[2]==0)

        {

           LongWang[2]=ID[i];

           countLong[2]++;

        }

        else if(ID[i]==LongWang[0]) //将帖子ID与龙王ID相比较,若相同,则龙王计数器加一

        {

           countLong[0]++;

        }

        else if(ID[i]==LongWang[1])

        {

           countLong[1]++;

        }

        else if(ID[i]==LongWang[2])

        {

           countLong[2]++;

        }

        else   //如果与三个龙王的ID都不同的话,则三个计数器都自减一

        {

           countLong[0]--;

           countLong[1]--;

           countLong[2]--;

        }

     }

     System.out.println("三个龙王ID分别是:");

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

     {

        System.out.print(LongWang[i]+"\t");

     }

  }

}

 

实现截图:

 

个人总结:

      编程要学会举一反三,有时类似的问题设计思想是不变的。