题目要求:
随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID。据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗?
设计思路:
先找出三个不同的ID作为初始值放入数组中,分别标记次数为1,当读入的ID与数组中的ID相同时,该ID的标记次数+1,如果读入的ID与数组中的ID没有相等的的时候,查看数组中标记次数是否有为0的,如果有,该ID变为读入的ID,并把标记次数变为1;如果没有为0的标记次数,则将数组中三个标记次数都-1。最后数组中的ID就是要找的三个水王。
程序源代码:
package find_2; public class find_2 { public static void main(String[] args) { // TODO Auto-generated method stub int size=15; int num[][]=new int[3][2]; int a[]=new int[size]; a[0]=1; a[1]=2; a[2]=3; a[3]=4; a[4]=4; a[5]=1; a[6]=2; a[7]=3; a[8]=5; a[9]=1; a[10]=2; a[11]=3; a[12]=1; a[13]=2; a[14]=3; for(int i=0;i<3;i++) for(int j=0;j<2;j++) num[i][j]=0; for(int i=0;i<size;i++) { if(a[i]!=num[0][0]&&a[i]!=num[1][0]&&a[i]!=num[2][0]) { if(num[0][1]==0) { num[0][0]=a[i]; num[0][1]=1; } else if(num[1][1]==0) { num[1][0]=a[i]; num[1][1]=1; } else if(num[2][1]==0) { num[2][0]=a[i]; num[2][1]=1; } else { num[0][1]--; num[1][1]--; num[2][1]--; } } else { if(a[i]==num[0][0]) num[0][1]++; if(a[i]==num[1][0]) num[1][1]++; if(a[i]==num[2][0]) num[2][1]++; } } System.out.println("三个水王的ID分别为:"+num[0][0]+" "+num[1][0]+" "+num[2][0]); }
程序运行截图:
总结:
这次的程序想了很久都没有很好的想法,虽然老师给了明确的方向朝着俩俩相消做,但是还是没有想法,最后还是上网上找到了别人的思路读懂后自己完成的,发现自己没有举一反三的想法,应该多锻炼自己。