软件工程练习——找水王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

    结果截图:

转载于:https://www.cnblogs.com/xiaosongbiog/p/5535792.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值