zoukankan      html  css  js  c++  java
  • 课堂练习找水王续

    •三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。
    •如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?(参考核心代码)
    •随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID。据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗?
    设计思想
    之前“水王”发帖数目超过了帖子数目的一半,因此每次删除两个不同的ID,直到剩下的所有ID都相同,那么剩下的就是水王的ID。
    而由于这次找的是三个水王,就变成了删除三个不同的ID
    代码实现
    package 水王;
    import java.util.Scanner;
    
    public class sw2 {
        public static void find(int p[],int n,int water[])
        {
            int c[]=new int [3];                    
            c[0]=c[1]=c[2]=0;
            water[0]=water[1]=water[2]=-1;   
            for(int i=0;i<n;i++)
            {
                if(c[0]==0)            
                {
                    c[0]++;
                    water[0]=p[i];
                }
                else if(c[1]==0)
                {
                    c[1]++;
                    water[1]=p[i];
                }
                else if(c[2]==0)
                {
                    c[2]++;
                    water[2]=p[i];
                }
                else if(p[i]==water[0])    
                {
                    c[0]++;
                }
                else if(p[i]==water[1])
                {
                    c[1]++;
                }
                else if(p[i]==water[2])
                {
                    c[2]++;
                }
                else                        
                {
                    c[0]--;
                    c[1]--;
                    c[2]--;
                }
            }
        }
        public static void main(String[] args) {
            // TODO 自动生成的方法存根
            Scanner sc =new Scanner(System.in);
            System.out.println("请输入ID的个数:");
            int n=sc.nextInt();
            int p[]=new int[10000];
            int waterID[]=new int[3];
            System.out.println("请输入ID");
            for(int i=0;i<n;i++)
            {
                p[i]=sc.nextInt();
            }
            find(p,n,waterID);
            System.out.println("水王的ID是:");
            for(int i=0;i<3;i++)
            {
                System.out.println(waterID[i]+" ");
            }
            System.out.println();
    
        }
    }

    实现截图

    个人总结
    学会结合以前的知识,整合思路,参考了一些同学的代码
  • 相关阅读:
    stc单品机的命名规则
    代码导入单片机运行
    openlayers tips
    LeetCode 766. Toeplitz Matrix
    【题集】二叉树的遍历各类题型汇总
    LeetCode 821. Shortest Distance to a Character
    关于C++中vector<vector<int> >的使用
    POJ
    LeetCode#155 Min Stack
    LeetCode#160 Intersection of Two Linked Lists
  • 原文地址:https://www.cnblogs.com/qianxia/p/5521297.html
Copyright © 2011-2022 走看看