课堂作业找水王2

Posted q白月倚寒楼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了课堂作业找水王2相关的知识,希望对你有一定的参考价值。

找水王2:

超级水王没有了。统计结果表明,有3个发帖很多的ID ,他们的发帖数目都超过了帖子总数目N的1/4。你能从发帖ID列表中快速找出他们ID吗?

设计思想:

和上一次的思路同源,如果每次删除四个不同的ID(不管是否包含发帖数目超过总数1/4的ID),那么,在剩下的ID列表中,原先发帖比例大于1/4的ID所占比例仍然大于1/4,可以通过不断重复这个过程,把ID列表中的ID总数降低(转化为更小的问题),从而得到问题的答案。

代码实现:

package test1;

public class ForumKing {

    public static void main(String[] args) {
        int ID[]={1,1,3,1,2,3,2,2,3,4};
        int n=10;
        int times[]=new int[3];
        int king[] =new int[3];
        times[0]=times[1]=times[2]=0;
        king[0]=king[1]=king[2]=-1;
        for(int i=0;i<n;i++){ 
              if(ID[i]==king[0])  
              {    
                  times[0]++;     
              }
              else if(ID[i]==king[1])   
              {
                  times[1]++;
              }    
              else if(ID[i]==king[2])   
              {    
                  times[2]++;
              }   
              else if(times[0]==0)   
              {    
                  times[0]=1;    
                  king[0]=ID[i];    
              }    
              else if(times[1]==0)   
              {    
                  times[1]=1;    
                  king[1]=ID[i];   
              }    
              else if(times[2]==0)   
              {    
                  times[2]=1;    
                  king[2]=ID[i];   
              } 
              else//此时删除四个不同元素   
              {    
                  times[0]--;    
                  times[1]--;    
                  times[2]--;   
              }   
        }
        System.out.println("水王的ID:");
        for(int j=0;j<3;j++)
        {
            System.out.print(king[j]+" ");
        }
    }

}

结果截图:

心得体会:

这一类问题大致就是运用一个思想就能解决那就是等效替换的思想,利用消除多余项来简化问题,这种思想很是简洁实用。

以上是关于课堂作业找水王2的主要内容,如果未能解决你的问题,请参考以下文章

找水王-课堂作业

课堂作业——找水王

课堂练习-找水王

课堂练习--找水王

课堂例子 找水王2

课堂练习……找水王