课堂作业-找水王2
Posted 等不到天亮等时光。
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了课堂作业-找水王2相关的知识,希望对你有一定的参考价值。
1.题目要求:
随着论坛的发展,管理员发现水王没有了,但是统计结果表明,
有三个发帖很多的ID。据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗?
2.设计思路:
因为三个小水王的ID在所有发帖ID中均超过1/4,所以初始化水王的时候可以用4个ID相比。如果所有ID序列排列在1-4的四个ID中出现相同ID名,那么就可以利用一个包含三个元素的数组初始化小水王ID;如果所有ID序列排列在1-4中无重复ID名,则在排列在4-8中寻找是否存在重复的ID名。以此循环直到找到在4个ID中出现重复的情况,就能对小水王ID初始化。
计数数组water[i](i为0,1,2)分别为初始化的三个小水王ID进行计数(计数数组各元素初始化为0),进入循环如果出现重复ID就对对应的计数元素加1,如果出现与三个初始化小水王ID不同的ID名,那么计数数组中所有元素都-1。若某个计数数组元素变为0,而下一个进入循环的ID与先前初始化的小水王ID各不相同,那么此ID代替先前那个对应计数数组为0的小水王ID。
循环结束,剩下的三个小水王ID名就是我们要找的水王。
3.程序源代码:
import java.util.*; public class Findwaterking { public static void main(String args[]) { Scanner sc=new Scanner(System.in); System.out.println("请输入ID的个数:"); int a=sc.nextInt(); int ID[]=new int[a]; System.out.println("请输入ID:"); for(int i=0;i<a;i++) { ID[i]=sc.nextInt(); } int idnull = -1;//定义一个不存在的ID int c[]=new int[3];//定义存储水王ID的数组 int water[]=new int[3];//定义计数数组 water[0]=water[1]=water[2]=0; c[0]=c[1]=c[2]=idnull; for(int i=0;i<a;i++) { if(ID[i]==c[0]) { water[0]++; } else if(ID[i]==c[1]) { water[1]++; } else if(ID[i]==c[2]) { water[2]++; } else if(water[0]==0) { water[0]=1; c[0]=ID[i]; } else if(water[1]==0) { water[1]=1; c[1]=ID[i]; } else if(water[2]==0) { water[2]=1; c[2]=ID[i]; } else { water[0]--; water[1]--; water[2]--; } } System.out.println("三个小水王分别是:"); System.out.println(c[0]); System.out.println(c[1]); System.out.println(c[2]); } }
4.实验结果截图:
5.实验总结:
拿到题目时不知所措,在稿纸上琢磨很久也没有得出如何设计算法,最后代码来源于网络,看懂后只能自愧不如...还是稳扎稳打从基础做起多看书多练习吧。
以上是关于课堂作业-找水王2的主要内容,如果未能解决你的问题,请参考以下文章