课堂作业05

设计思路:(1)每次删除4个不同的ID(不管是否超过总数1/4的ID),那么,剩下的ID列表中,
原先发帖比例大于1/4的ID所占比例仍然大于1/4。可以通过不断重复这个过程,
把ID总数降低,从而得到问题的答案。
(2)用candidate[3]记录三个候选ID,用Times[3]记录它们的累积次数.
(3)然后遍历整个ID列表,每处理一个ID,若与candidate[i]中的某一个相同,
则Times[i]++,若与三个都不同,则说明找到了四个互不相同的ID,将三个
Times[i]--,也就相当于“删除了四个不同ID”.
(4)若某一个count[i]==0,则更新之。 源代码:
public class FindKingOfWater {
	public static void main(String args[])
	{
		int ID[]={1,2,3,4,1,2,3};
		Find(ID);
	}
		public static void Find(int ID[])
		{
			int Times[]=new int[3];
			int candidate[]=new int[3];
			Times[0]=Times[1]=Times[2]=0;
			candidate[0]=candidate[1]=candidate[2]=0;
			for(int i=0;i<ID.length;i++)
			  {
				if(ID[i]==candidate[0])
				{
					Times[0]++;
				}

				else if(ID[i]==candidate[1])
				{
					Times[1]++;
				}

				else if(ID[i]==candidate[2])
				{
					Times[2]++;
				}
				else if(Times[0]==0)
				{
					Times[0]=1;
					candidate[0]=ID[i];
				}
				else if(Times[1]==0)
				{
					Times[1]=1;
					candidate[1]=ID[i];
				}
				else if(Times[2]==0)
				{
					Times[2]=1;
					candidate[2]=ID[i];
				}
	                    else
				{
					Times[0]--;
					Times[1]--;
					Times[2]--;
					
				}
			  }
			for(int i=0;i<3;i++)
			{
				System.out.println("水王"+(i+1)+"的ID是:"+candidate[i]);
			}
		}
			
	}
		

程序截图: 

 

原文地址:https://www.cnblogs.com/ygl888/p/5535540.html