• 软件工程个人作业13


    •三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。
    •如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?
    •随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID。据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗?
    设计思想
    之前“水王”发帖数目超过了帖子数目的一半,所以直接找帖子数超过一半的ID即可,这次找第二个“水王”只需要在把ID的列表去掉原来的“水王”,再次寻找即可。
    代码实现:
     1 package finding;
     2 import java.util.InputMismatchException;
     3 import java.util.Scanner;
     4 
     5 public class finding {
     6     public static void main(String[] args) {
     7         // TODO 自动生成的方法存根
     8         for(int m=0;;)
     9         {
    10             int bug=0;
    11             Scanner sc =new Scanner(System.in);
    12             System.out.println("请输入ID的个数:");
    13             int n=sc.nextInt();
    14             System.out.println("请输入ID(为整数):");
    15             int ID[]=new int [n];
    16             try                              //捕捉输入错误
    17             {
    18                 for(int i=0;i<n;i++)
    19                 {
    20                     ID[i]=sc.nextInt();
    21                 }
    22             }
    23             catch(InputMismatchException e)
    24             {
    25                  System.out.println("输入不合法!请输入整数!");
    26                  bug=1;
    27              }
    28             if(bug!=1)
    29             {
    30                 int shuiwang[]=new int [2];
    31                 for(int l=0;l<2;l++)
    32                 {
    33                     shuiwang[l]=ID[0];                 //从第一个ID开始,第一个即为水王
    34                     int temp=1;
    35                     for(int i=0;i<n-1;i++)
    36                     {
    37                         for(int j=i+1;j<n;j++)
    38                         {
    39                             if(shuiwang[0]==ID[j])         //当此时水王与下一个ID相同时,计数器temp+1
    40                             {
    41                                 temp++;
    42                             }
    43                         }
    44                         if(temp<=n/2)
    45                         {
    46                             shuiwang[0]=ID[i+1];         //当temp小于总帖子数的一半时,换下一个ID为临时水王
    47                         }
    48                     }
    49                     for(int i=0;i<n-temp;i++)
    50                     {
    51                         for(int j=0;j<n;j++)
    52                         {
    53                             if(ID[j]!=shuiwang[0])
    54                             {
    55                                 ID[i]=ID[j];
    56                                 break;
    57                             }
    58                              
    59                         } 
    60                      }
    61                      n=n-temp;
    62                 }                
    63                  System.out.println("水王是(发帖数超过总贴数一半的ID):"+shuiwang[0]+"   "+shuiwang[1]);
    64              }
    65             System.out.println("继续寻找水王请按n,退出请输入s:");
    66             String s=sc.next();
    67             if(s.equals("s"))
    68                 System.exit(0);
    69             else
    70                 continue;    
    71             sc.close();
    72         }
    73 
    74     }
    75 }
    截图:
  • 相关阅读:
    HTML表格布局例子
    WCF分布式开发必备知识(2):.Net Remoting (转)
    WCF分布式开发必备知识(1):MSMQ消息队列(转)
    WCF数据契约与序列化(转)
    Asp.net中图片存储数据库以及页面读取显示通用方法详解附源码下载
    2010年初的一点随想
    Windows7旗舰版磁盘分区详解—附分区步骤截图
    AjaxControltoolkit(工具包)安装步骤说明
    Windows7安装IIS中关于Windows 系列于谷歌Chrome系统争议一点联想
    Oracle 10G中关于约束在表和列中使用详解.
  • 原文地址:https://www.cnblogs.com/gzgz/p/5535838.html
Copyright © 2020-2023  润新知