课堂作业值之寻找水王2

随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID。据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗

设计 思想:

与上次寻找水王一样,这次将与三个水王不同的ID都消除掉,剩下的就是三个水王的ID

程序源代码:

import java.util.Scanner;
public class shuiwang2 {
public static void main(String args[])
{
Scanner scanner=new Scanner(System.in);
System.out.println("请输入ID的个数");
int num=scanner.nextInt();
int ID[]=new int[num];
System.out.println("请输入你的ID");
for(int i=0;i<num;i++)
{
ID[i]=scanner.nextInt();
}

int idnull=-1;
int a[]=new int[3];
int water[]=new int [3];
a[0]=a[1]=a[2]=idnull;
water[0]=water[1]=water[2]=0;
for(int i=0;i<num;i++)
{
if(ID[i]==a[0])
{
water[0]++;
}
else if(ID[i]==a[1])
{
water[1]++;
}
else if(ID[i]==a[2])
{
water[2]++;
}
else if(water[0]==0)
{
water[0]=1;
a[0]=ID[i];
}
else if(water[1]==0)
{
water[1]=1;
a[1]=ID[i];
}
else if(water[2]==0)
{
water[2]=1;
a[2]=ID[i];
}
else
{
water[0]--;
water[1]--;
water[2]--;
}
}

System.out.println("三个水王分别是:");
System.out.println(a[0]);
System.out.println(a[1]);
System.out.println(a[2]);
}

}

程序截图:

程序总结:

从此次任务中可再次学习到消除的思想,对于一个问题可以先进行思考,如果不懂,可以查看一些相关的资料

时间: 2024-10-18 23:02:37

课堂作业值之寻找水王2的相关文章

课堂作业--寻找水军

一.题目要求 随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID.据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗? 二.设计思路 本次题目是在上次寻找“水王”的基础上进行拓展,设计思路和上次的相似,上次寻找水王是用的一个水王变量,一个计数变量,那么本次的设计思想沿用上次的技巧,有三个水军变量,三个计数变量:分别使水军的这三个变量和下一个数比较,然后和三个水军相对应的计数变量分别进行计数,相同则加一,不同则抵消减一:依次循环,和水王的规则类似,最后找到3

软件工程概论课堂作业3

题目:返回一个整数数组中最大子数组的和 要求: 输入一个一维整形数组,数组里有正数也有负数. 一维数组首尾相接,象个一条首尾相接带子一样. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值. 设计思想: 用户自定义数组长度并依次输入数组元素,设一个全局变量初始化为零的数组a[N],N=10000: 1.因为该数组首尾相接可视作一个环,那么我们需要在一个合适的位置断开,把数组元素展成一条笔直的带子. (1).设用户自定义数组长度为m,输入数组各元素值a[1

课堂作业及 动手动脑问题整理

课堂作业一 使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数.请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象?”. 程序: package com; public class Duixiang { public static void main(String[] args){ duixiang a=new duixiang(); a.out(); duixiang b=new duixiang(); b.out(); } } class duixiang{ stati

寻找水王

一.设计思路 1.我采用的方法是两两计算抵消的想法,相邻的两个ID依次比较. 2.计数器用来表示水王出现的次数.默认当计数器为0时,水王就是当前的ID,因此水王出现一次,计数器从0加1,然后比较后一个ID,如果相同,意味着水王又出现一次,计数器就自加1:如果不同,意味着水王没有出现第二次,直接抵消,计数器就减1.当计数器为0,水王又是当前ID,依次循环. 二.代码 //2016/5/18 信1301-1 黄山成 20133048 寻找水贴王的ID #include<iostream> usin

寻找水王续

一.题目要求 随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID.据统计他们的发帖数量超过了1/4, 你能从发帖列表中快速找到他们吗? 二.设计思路 这次是求3个ID,而且他们发帖数各超过了总数的四分之一,所以再次用上次寻找水王实验的思想,消除不同ID号,只不 过得设置3个标记,复杂一点,可用数组表示. 三.代码 #include<iostream.h> void ID_array(int l,int A[]) { cout<<"请输入ID序列:

软件工程课堂作业04

软件工程课堂作业04 源代码: 1 package jian; 2 import java.io.*; 3 import java.util.Scanner; 4 public class Point3D{ 5 public static int Lenght(int list[],int lenght) 6 { 7 int i,max; 8 max=list[0]; 9 for(i=1;i<=(lenght-1);i++) 10 { 11 if(list[i]>max) 12 { 13 ma

课堂作业数组最大和

题目: 输入一个一维整形数组,数组里有正数也有负数. 一维数组首尾相接,象个一条首尾相接带子一样. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值. 发表一篇博客文章讲述设计思想,出现的问题,可能的解决方案(多选).源代码.结果截图.总结. 设计思想: 1.设计思想: 首先设置两个变量,分别用来存储数组长度也就是number和结果result:然后再通过语句来询问用户需要的数组长度再设个动态数组用来让用户输入数组中的数字,将每一个数值都存放进数组对应位

课堂作业之寻找水王

•三人行设计了一个灌水论坛.信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子.坊间风闻该“水王”发帖数目超过了帖子数目的一半. •如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗? 程序设计思想: 将两两不同的id号相抵消,剩的就只能是水王了 程序源代码实现 import java.util.Scanner; public class shuiwang{ public stati

软件工程课堂作业——寻找水王2

一.题目 随着论坛的发展,管理员发现“水王”没有了,但是统计结果表明,有三个发帖很多的ID.据统计他们的发帖数量超过了总和的1/4.你能从发帖列表中快速找到他们吗? 二.设计思想 根据三个水王号的ID数均超过四分之一可以知道只要非水王号出现一次,水王号ID必定都对应会出现一次.则目前判断为水王号的ID出现则对应次数加一,非水王号出现一次则目前判断为水王号出现次数的均减一.运用这种算法则需要判断输入的ID号是否符合条件,通过判断最终判断出来的ID号的出现的次数之差可以判断出是否满足“发帖数量超过了