设计思想:
既然三个水龙王每个的发帖数大于四分之一,那就四个帖子一组,假设前三个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");
}
}
}
实现截图:
个人总结:
编程要学会举一反三,有时类似的问题设计思想是不变的。