zoukankan      html  css  js  c++  java
  • 课堂测试之找水王

      题目:三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子,坊间风闻该“水王”发帖数目超过了帖子数目的一半。如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?

      思路:首先,不考虑寻找水王的效率问题,只需要两层循环就可以找到水王,从第一个开始判断与其相等的个数,如果最后个数多于一半,那么我们就找到了。

    二:考虑到效率问题,我们只用一层循环来找到水王。从第一个开始,与之后的进行比较,如果相等,计数加一,再与后面比较,如果不相同,则越过这两个数,从下两个进行比较,最后得到的就是水王。以下是代码:

    其中,select() 方法是不考虑效率,select1()是考虑效率的

    package text1;
    
    import java.util.Scanner;
    import java.util.*;
    public class abc {
        
        //输入
        static Scanner input = new Scanner(System.in);
        //生成固定个数id
        static String id[];
        public static void setId(int num) {
            id = new String[num];
            for(int i = 0;i<num;i++) {
                id[i] = input.next();
            }
        }
        //挑选水王
        public static void select() {
            int count = 0;
            for(int i = 0;i<id.length;i++) {
                for(int j = 0;j<id.length;j++) {
                    if(id[i].equals(id[j])) {
                        count++;
                    }
                }
                if(count >= id.length/2) {
                    System.out.println("水王"+id[i]);
                    break;
                }
                count = 0;
            }
        }
        public static void select1() {
            int count = 1;
            String back = id[0];
            for(int i = 1;i < id.length;i++) {
                if(back.equals(id[i])) {//相等
                    count++;
                    back = id[i];
                }else {
                    count--;
                    if(count<=0) {
                        back = id[i]; //换下一个
                        count = 1;
                    }
                }
            }
            System.out.println("水王"+back);
            
        }
        
        public static void main(String args[]) {
            System.out.println("请输入id个数:");
            int num = 0;
            num = input.nextInt();
            setId(num);
            //挑选水王
            //select();
            select1();
        }
    }
  • 相关阅读:
    eclipse
    Java SE Runtime Environment
    开源免费的LittleV GUI
    【转】 ARM Cortex-M 系列 MCU 错误追踪库 CmBacktrace
    【转】博客美化(7)推荐几个优秀的自定义博客
    【转】博客美化(6)为你的博文自动添加目录
    【转】博客美化(5)为博客或系统添加一个强大的评论系统
    【转】博客美化(4)为博客添加一个智能的文章推荐插件
    linux管理进程的链表
    连连看游戏(dfs)【华为上机题目】
  • 原文地址:https://www.cnblogs.com/liyuchao/p/10963857.html
Copyright © 2011-2022 走看看