找水龙续

设计思想:

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

代码实现:

import java.util.Scanner;

public class DragonKing {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int length;//帖子数量
        int list[]={0,0,0};//计数
        int IDofKing[]={0,0,0};//储存水王地址     
        System.out.println("请输入总帖子数量:");
        Scanner sc=new Scanner(System.in);
        length=sc.nextInt();
        int ID[]=new int[length];//储存所有的id地址
        System.out.println("请输入水帖子的ID");
        for(int j=0;j<length;j++)
            
        {
            ID[j]=sc.nextInt();
        }
        /*求解过程*/
        for(int i=0;i<length;i++)
        {
            if(list[0]==0&&ID[i]!=IDofKing[1]&&ID[i]!=IDofKing[2])
            {
                list[0]=1;
                IDofKing[0]=ID[i];
            }
            else if(list[1]==0 && ID[i]!=IDofKing[0] && ID[i]!=IDofKing[2])
            {
                list[1]=1;
                IDofKing[1]=ID[i];
            }
            else if(list[2]==0 && ID[i]!=IDofKing[0] && ID[i]!=IDofKing[1])
            {
                list[2]=1;
                IDofKing[2]=ID[i];
            }
            else if(ID[i]!=IDofKing[0] && ID[i]!=IDofKing[1] && ID[i]!=IDofKing[2])
            {
                list[0]--;
                list[1]--;
                list[2]--;
            }
            else if(ID[i]==IDofKing[0])
            {
                list[0]++;
            }
            else if(ID[i]==IDofKing[1])
            {
                list[1]++;
            }
            else if(ID[i]==IDofKing[2])
            {
                list[2]++;
            }      
        }
        System.out.println("三个水王ID为:"+IDofKing[0]+" "+IDofKing[1]+" "+IDofKing[2]);
    }
}

实现截图:

 

个人总结:

  这次找水王与第一次的思想相同,都是通过相消。第一次水王发帖数超过一半,通过两两相消,知道最后剩下的哪一个ID就是水王,这次是找出三个水王,就是删除三个ID。

原文地址:https://www.cnblogs.com/mengqimoli/p/5535499.html