找水王续

设计思想:

     定义数组储存ID。将每个水王ID都与其它水军ID进行抵消。首先先将前三个不同水军ID设为水王ID,开始抵消计数,“水王”中抵消后数量剩余为0的即被淘汰,用一个最新的水军ID继续进行抵消,最后剩下的即为水王ID。

源代码:

import java.util.Scanner;

public class main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int length;//帖子数量
		int idnum[]={0,0,0};//计数
	    int ID[]={0,0,0};//储存水王地址      
	    System.out.println("请输入总帖子数量:");
	    Scanner in=new Scanner(System.in); 
	    length=in.nextInt();
	    int curId[]=new int[length];//储存所有的id地址
	    System.out.println("请输入水军的ID列表");

	    for(int j=0;j<length;j++)
	    {
	        curId[j]=in.nextInt();
	    }
	    /*求解过程*/
	    for(int i=0;i<length;i++)
	    {
	        if(idnum[0]==0&&curId[i]!=ID[1]&&curId[i]!=ID[2])
	        {
	            idnum[0]=1;
	            ID[0]=curId[i];
	        }
	        else if(idnum[1]==0 && curId[i]!=ID[0] && curId[i]!=ID[2])
	        {
	            idnum[1]=1;
	            ID[1]=curId[i];
	        }
	        else if(idnum[2]==0 && curId[i]!=ID[0] && curId[i]!=ID[1])
	        {
	            idnum[2]=1;
	            ID[2]=curId[i];
	        }
	        else if(curId[i]!=ID[0] && curId[i]!=ID[1] && curId[i]!=ID[2])
	        {
	            idnum[0]--;
	            idnum[1]--;
	            idnum[2]--;
	        }
	        else if(curId[i]==ID[0])
	        {
	            idnum[0]++;
	        }
	        else if(curId[i]==ID[1])
	        {
	            idnum[1]++;
	        }
	        else if(curId[i]==ID[2])
	        {
	            idnum[2]++;
	        }       
	    }
	    System.out.println("三个水王ID为:"+ID[0]+" "+ID[1]+" "+ID[2]);
	}

}

结果截图:

个人总结:

  这个是找水王与上一次条件有所不同,但解决思路基本相同。同样是利用删除相同ID 进行解决问题。要解决实验问题,必须要进行笔上的演算,找到合适的算法。

原文地址:https://www.cnblogs.com/java-test/p/5528286.html