程序题目:
•三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。
•如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?
一、设计思想
根据两两相消的思想,发帖数过半的ID在与其他不同ID比较,相同则计数器加一,不同计数器减一。当计数器为负数时,水王依次下轮。
二、源代码
import java.util.InputMismatchException; import java.util.Scanner; public class Finding { public static void main(String[] args) { // TODO Auto-generated method stub for(int m=0;;) //按照用户需求无限循环 { int judge=0; Scanner in=new Scanner(System.in); int n; System.out.println("请输入帖子的个数:"); n=in.nextInt(); System.out.println("请输入ID(序号为整数):"); int ID[]=new int [n]; try //捕捉输入错误 { for(int i=0;i<n;i++) { ID[i]=in.nextInt(); } } catch(InputMismatchException e) { System.out.println("输入不合法!请输入整数!"); judge=1; } int shuiwang=ID[0];int temp=0; //从第一个ID开始,第一个即为水王 for(int i=0;i<n-1;i++) { //当此时水王与下一个ID相同时,计数器temp+1 if(shuiwang==ID[i+1]) { temp++; } else { //当此时水王与下一个ID不相同时,计数器temp-1 temp--; } if(temp<0) { shuiwang=ID[i+1]; //当temp小于0时说明出现次数少,换下一个ID为临时水王 } } if(judge!=1) System.out.println("水王是:"+shuiwang); System.out.println("继续寻找水王请按任意键,退出请按q:"); String s=in.next(); if(s.equals("q")) System.exit(0); else continue; in.close(); } } }
三、运行结果截图
四、个人总结
小程序体现一个人的解决问题的思路,只有多练才能提高技术,要再接再厉。