课堂测试5

设计思想:

      与上次的实验思路基本相同,假设每个ID都有可能是水王,那么在遍历时这个水王就要被两两比较,相互抵消,可能自己的帖子数是会增加的,也可能是抵消的,帖子数要减少的, 只不过是这三个ID同时与发帖ID进行比较抵消,而且这三个ID 是不会相互比较的。

源代码:

//求三个小水王
import java.util.Scanner;
public class test5 {
  public static void main(String[] args){
     Scanner in=new Scanner(System.in);
     int N;
        System.out.println("请输入帖子的总数:");
        N=in.nextInt();
        int list[]=new int [N];
        int i;
        System.out.println("请输入ID:");
        for(i=0;i<N;i++)
     {
         list[i]=in.nextInt();
     }
        int nID[]=new int [3];
        nID[0]=nID[1]=nID[2]=0;
        int ID[]=new int [3];
        ID[0]=ID[1]=ID[2]=-1;
        for(i=0;i<N;i++)
        {
            if(nID[0]==0)
           {
               nID[0]++;
               ID[0]=list[i];
           }
           else if(nID[1]==0)
          {
              nID[1]++;
              ID[1]=list[i];
          }
           else if(nID[2]==0)
          {
              nID[2]++;
              ID[2]=list[i];
          }
           else if(list[i]==ID[0])
            {
                nID[0]++;
            }
            else if(list[i]==ID[1])
            {
                nID[1]++;
            }
            else if(list[i]==ID[2])
            {
                nID[2]++;
            }
            else
            {
                nID[0]--;
                nID[1]--;
                nID[2]--;
            }
        }
        System.out.println("三个小水王分别是:"+ID[0]+" "+ID[1]+" "+ID[2]);
        in.close();
  }
}

结果截图:

个人总结:

    通过找特殊,我们可以发现解决问题的方法,再通过这个方法去解决普遍的问题就很简单了。

posted @ 2016-05-25 20:25  勿言¥  阅读(107)  评论(0编辑  收藏  举报