课下作业
设计思路:
如果每次删除四个不同的ID(不管是否包含发帖数目超过总数1/4的ID),那么,在剩下的ID列表中,原先发帖比例大于1/4的ID所占比例仍然大于1/4。可以通过不断重复这个过程,把ID列表中的ID总数降低(转化为更小的问题),从而得到问题的答案。
代码:
package ceshi; import java.util.Scanner; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in= new Scanner(System.in); int temp[]=new int[3]; //计数器 temp[0]=temp[1]=temp[2]=0; int water[]=new int[3]; //假设三个水王的ID为ID(0)、ID(1)、ID(2) water[0]=water[1]=water[2]=0; System.out.println("请输入帖子的总数"); int sum=in.nextInt(); int id[]=new int[sum]; System.out.println("请输入id"); for(int i=0;i<sum;i++) { id[i]=in.nextInt(); } //计算 for(int i=0;i<sum;i++) { if(temp[0]==0 ) { temp[0]++; water[0]=id[i]; } else if(temp[1]==0 ) { temp[1]++; water[1]=id[i]; } else if(temp[2]==0 ) { temp[2]++; water[2]=id[i]; } else if(id[i]==water[0]) { temp[0]++; } else if(id[i]==water[1]) { temp[1]++; } else if(id[i]==water[2]) { temp[2]++; } else { temp[0]--; temp[1]--; temp[2]--; } } System.out.println("水王为:"); for(int i=0;i<3;i++) { System.out.print(water[i]+" "); } } }
截图:
总结:
在这次的写水王的任务中和上次的鞋水王中,我发现两次的思路写法差不多,只不过是在我们的产生的数据是那个不同:让我理解到我们如果不会一个程序,我们应该先将它简化成简单的,我们易懂的程序,慢慢地找出它的规律。