随堂作业 之 寻找水军

一、题目要求

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

二、设计思路

本次题目是在上次寻找“水王”的基础上进行拓展,设计思路和上次的相似,本次的设计思想沿用上次的技巧,有三个水军变量,三个计数变量;分别使水军的这三个变量和下一个数比较,然后和三个水军相对应的计数变量分别进行计数,相同则加一,不同则抵消减一;依次循环,和水王的规则类似,最后找到3个水军

三、源代码

 1 #include "stdio.h"
 2  int main()
 3  {
 4      int arrID[15]={110,110,111,112,113,111,111,112,110,110,112,112,111,113,114};
 5      int shuijun1=0,shuijun2=0,shuijun3=0;
 6       int x1=0,x2=0,x3=0;
 7       int num=15;
 8       for(int i=0;i<num;i++)
 9       {
10           if(x1==0 && arrID[i]!=shuijun2 && arrID[i]!=shuijun3)
11          {
12              x1=1;
13              shuijun1=arrID[i];
14          }
15          else if(x2==0 && arrID[i]!=shuijun1 && arrID[i]!=shuijun3)
16          {
17              x2=1;
18              shuijun2=arrID[i];
19          }
20          else if(x3==0 && arrID[i]!=shuijun1 && arrID[i]!=shuijun2)
21          {
22              x3=1;
23              shuijun3=arrID[i];
24          }
25          else if(arrID[i]!=shuijun1 && arrID[i]!=shuijun2 && arrID[i]!=shuijun3)
26          {
27              x1--;
28              x2--;
29              x3--;
30          }
31          else if(arrID[i]==shuijun1)
32          {
33              x1++;
34          }
35          else if(arrID[i]==shuijun2)
36          {
37              x2++;
38          }
39          else if(arrID[i]==shuijun3)
40          {
41              x3++;
42          }
43      }
44      printf("三个水军的ID分别是:%d、%d、%d\n",shuijun1,shuijun2,shuijun3);
45      return 0;
46  }

四、运行结果

五、心得体会

有了之前的实验,加上老师的点播,这次实验做得很顺利。

时间: 2024-10-12 19:47:18

随堂作业 之 寻找水军的相关文章

课堂作业--寻找水军

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

课堂作业之寻找水王

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

C语言程序设计第7堂作业

     一.本次课主要内容: 本次以计算圆柱体体积为例,通过定义体积计算功能的函数和主函数调用的例子,引出函数定义的一般形式:函数首部加函数体,且在函数结尾处通过return 语句返回结果.本节要重点掌握两点: (1)形参.实参及参数传递.形参只能用变量表示,在函数中起作用:实参可以是变量.常量或表达式,在主调函数中.实参与形参要个数一致,类型一致.参数传递时,实参把变量.常量的值或者表达式结果值传递给形参. (2)函数定义首部与声明.二者形式相似,函数声明的目的主要是说明函数的类型和参数的情

C语言程序设计第5堂作业

一.本次课学习主要内容及知识结构点: 二.实验内容:(60分) 1. 求奇数和.输入一批正整数(以零或负数为结束标志),求其中的奇数和.试编写相应程序. 2. 展开式求和.输入一个实数 x,计算并输出下式的值,直到最后一项的绝对值小于0.00001 (保留4 位小数).要求定义和调用函数fact(n)计算n 的阶乘,可以调用pow()函数求幂.试编写相应程序. 3. 求序列前n项和(2/1+3/2+5/3+8/5+...).输入一个正整数n,输出 2/1+3/2+5/3+8/5 +"的前n项之和

C语言程序设计第3堂作业

第3次作业的Deadline:? 2016-09-29 23:00pm 本次课学习主要内容: 常用数学函数 掌握for语句 分支结构中的二分支结构.多分支结构和else-if语句 通过四则运算程序掌握字符型数据的输入和输出及逻辑运算 通过简单程序进一步理解掌握数据类型和运算符的特点及应用. 实验内容: 1.计算平方根序列√?1???+√?2???+√?3???+?的前N项之和.可包含头文件math.h,并调用sqrt函数求平方根. 2. 本题要求编写程序,计算交错序列 1-2/3+3/5-4/7

C语言程序设计第6堂作业

          一.  本次课主要内容:             通过几个实例来进一步掌握循环结构的应用. 二. 实验内容:(70分) 1. 穷举算法(古典算术问题-搬砖头)某地需要搬运砖块,已知男人一人搬3块,女人一人搬2块,小孩两人搬一块.问用45人正好搬45块砖,有多少种搬法? 2. 猴子吃桃问题.一只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个:第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半加一个.到第n天早上想再吃时,见只剩下一

C语言程序设计第8堂作业

一.本次课主要内容: 本次课通过以下两个知识点来完成: (1)以数字金字塔为例,介绍函数的另一种形式,即不返回结果的函数.不返回结果的函数在定义.调用.参数传递.函数声明上,思路完全与以前相同,只是函数类型变为void.最后,强调函数的优点,即结构化程序设计的思路,包括按自顶向下的方法对问题进行分析.模块化设计和结构化编码3 个步骤. (2)以复数运算为例,介绍变量与函数的关系,主要掌握局部变量.全局变量和静态变量三种形式.需要分清三种变量的作用与定义的位置,区分局部变量与全局变量的异同点,局部

【人工智能】实验课随堂作业1

作业1 选择题: 1.  C 编程题: 1. 代码: #include<iostream> #include<cstdio> #include<cmath> #include<algorithm> #include<climits> using namespace std; int isPrime(int n){ int i,j; if(n==2){ return true; } else if (n<2||n%2==0){ return

编程之美2.3——寻找水军(抵消法)

1.在数组中寻找出现次数超过一半的一个元素. 2.在数组中寻找出现次数超过1/4的三个元素. [思路] 1)常规做法:先将数组排序,时间O(nlogn):再遍历一次,统计每个元素出现的次数,得到题目要求. 2)时间O(n)的做法:抵消法.对于第一题,每次抵消两个不同的数,剩下的数组主元素出现次数还是超过一半.即缩小题目规模的思想. 对于第二题,则每次抵消4个数,转化为规模较小的问题. 抵消两个数的代码很简单: int findOverHalf(int *ID, int N){ int ntime