在之前的基础上将前三个不同水军ID设为水王ID,开始抵消计数,“水王”中抵消后数量剩余为0的即被淘汰,用一个最新的水军ID继续进行抵消,最后剩下的即为水王ID。
源代码:
import java.util.Scanner; public class shui { @SuppressWarnings("resource") public static void main(String[] args) { // TODO Auto-generated method stub int 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 进行解决问题,理清思路很重要。