zoukankan      html  css  js  c++  java
  • 软件工程练习——找水王2

        随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID。据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗?

        设计思想:这次的水王有三个,所以我选择用排除法一个个进行排除,假设第一个ID是水王,用它与之后的其他ID进行比较,对出现的次数进行统计,最后将这个ID全部拿出来,放入另一个数组中(出栈入栈的思想)。然后循环这个过程,直到全部水王找出。

    package shuiwang2;
    import java.util.*;
    
    public class Find_shuiwang {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Find_function function = new Find_function();
            Scanner sca1=new Scanner(System.in);
            Scanner sca2=new Scanner(System.in);
            System.out.println("输入帖子数:");
            int n=sca1.nextInt();
            String post[]=new String[n];
            
            int i;
            System.out.println("输入帖子ID:");
            for(i=0;i<n;i++)
            {
                  post[i]=sca2.nextLine();
            }
            String shuiwang[] = function.find(post, n);
            System.out.println("水王ID是:");
            for(i=0;i<3;i++)
            {
                System.out.println(shuiwang[i]+" ");
            }
            
        }
    
    }
    Find_shuiwang
    package shuiwang2;
    
    public class Find_function {
        String[] find(String[] post,int n)
        {
            int i,j = 0;
            int num_find=0;//找到几个相同的ID
            int num_mark=0;//标记有几个ID入栈
            int num_shuiwang=0;        
            String shuiwang[]= new String[3];
            String zhan[]=new String[n+1];//建一个栈放ID
                    
            while(num_shuiwang<3){//当水王没找全之前一直循环
                shuiwang[num_shuiwang]=post[0];//令第一个ID为水王
                for(i=0;i<n-num_mark;i++)//两两对比
                {            
                    if(shuiwang[num_shuiwang].equals(post[i]))
                        {
                            zhan[num_mark]=post[i];
                            num_find+=1;
                            
                            for(j=i;j<n-num_mark-1;j++)//前移数组
                            {
                                post[j]=post[j+1];
                            }
                            num_mark+=1;
                        }            
                }
                if(num_find >= n/4)
                {
                    num_shuiwang+=1;
                    num_find = 0;
                }
                else
                {
                    num_find = 0;
                }
            }
            return shuiwang;
        }
    }
    Find_function

        结果截图:

  • 相关阅读:
    关于lockkeyword
    关于多层for循环迭代的效率优化问题
    Android 面试精华题目总结
    Linux基础回想(1)——Linux系统概述
    linux源代码编译安装OpenCV
    校赛热身 Problem C. Sometimes Naive (状压dp)
    校赛热身 Problem C. Sometimes Naive (状压dp)
    校赛热身 Problem B. Matrix Fast Power
    校赛热身 Problem B. Matrix Fast Power
    集合的划分(递推)
  • 原文地址:https://www.cnblogs.com/xiaosongbiog/p/5535792.html
Copyright © 2011-2022 走看看