在之前的基础上将前三个不同水军ID设为水王ID,开始抵消计数,“水王”中抵消后数量剩余为0的即被淘汰,用一个最新的水军ID继续进行抵消,最后剩下的即为水王ID。
源代码:
import java.util.Scanner;public class shui {@SuppressWarnings("resource")public static void main(String[] args) {// TODO Auto-generated method stubint Num;//帖子数量int num[]={0,0,0};//计数int ID[]={0,0,0};//储存水王地址 System.out.println("请输入总帖子数量:");Scanner in=new Scanner(System.in); Num=in.nextInt();char Id[]=new char[Num];//储存所有的id地址 System.out.println("请输入水军的ID列表");for(int j=0;j<Num;j++){Id[j]=(char) in.nextInt();}for(int i=0;i<Num;i++){if(num[0]==0&&Id[i]!=ID[1]&&Id[i]!=ID[2]){num[0]=1;ID[0]=Id[i];}else if(num[1]==0 && Id[i]!=ID[0] && Id[i]!=ID[2]){num[1]=1;ID[1]=Id[i];}else if(num[2]==0 && Id[i]!=ID[0] && Id[i]!=ID[1]){num[2]=1;ID[2]=Id[i];}else if(Id[i]!=ID[0] && Id[i]!=ID[1] && Id[i]!=ID[2]){num[0]--;num[1]--;num[2]--;}else if(Id[i]==ID[0]){num[0]++;}else if(Id[i]==ID[1]){num[1]++;}else if(Id[i]==ID[2]){num[2]++;} }System.out.println("三个水王ID为:"+ID[0]+" "+ID[1]+" "+ID[2]);}}
运行截图:
总结:思路大体一样,同样是利用删除相同ID 进行解决问题,理清思路很重要。