12.6 水王

一、题目要求

  三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。 如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?

二、设计思想

删掉相邻的不同的ID,由于“水王”发帖数目超过了帖子数目的一半,这样剩下的ID一定是水王的ID

三、代码实现

 1 #include<iostream.h>  2 void main()  3 {  4     int arr[10]={3,3,6,4,3,5,3,3,7,3};//假设的ID号  5     int shuiwang = 0;   6     int count=0;  //标记 7     cout<<"假设有10个ID,分别为:";  8     for(int i=0;i<10;i++) 9     {  10         cout<<arr[i]<<"  "; 11         if(count == 0) 12         {  13             shuiwang = arr[i];  14             count = 1;  15         }  16         else 17         {  18             if(shuiwang == arr[i])  19                 count ++;  20             else   21                 count --;  22         }  23     } 24     cout<<endl<<"水王的ID是"<<shuiwang<<endl; 25 }

四、运行截图

五、实验总结

  在刚开始思考这个问题的时候,用了最笨的方法,就是先排序,由于“水王”发帖数目超过了帖子数目的一半,然后发现中间的ID一定是水王的ID,不过这样的时间复杂度最小是O(n+lg(n)),不满足老师的要求,所以只能一次遍历然后就找到水王的ID。在实现的过程中改了好多次,总是不太顺利,不过最终在同学的帮助下还是完成了!

原文地址:https://www.cnblogs.com/xinyue6/p/10093313.html

时间: 2024-10-22 03:53:50

12.6 水王的相关文章

课堂练习之《三个水王》

实验题目 随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID.据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗? 实验思路  跟上一次一样,只不过是计数器由一个变为了三个,定义数组表示它们,由于据统计他们的发帖数量超过了1/4,可将每个水桶ID都与其它水军ID进行抵消最后剩下的就是三个水王,将前三个不同水军ID置为水桶ID,开始抵消计数,“水王”中抵消后数量剩余为0的即被淘汰,用一个最新的水军ID继续进行抵消,最后剩下的即为水桶ID. 代码实现 1 #i

寻找水王程序一

题目 : 信息学院的论坛里面,有一大“水王”,他不但喜欢发贴,还会回复其他ID发的每个帖子.风闻该“水王”发帖数目超过了帖子总数的一半. 如果你有一个当前论坛上所有帖子(包括回帖)的列表,其中帖子作者的ID也在表中,你能怎么样找出这个传说中的Tango水王吗? 思路: 我开始想到的思路是: 可以假设帖子的第一个ID是次数最大的. 遍历下一个ID,如果跟第一个一样,就++,否则,遇到一个不是水王发的帖子,将这个帖子与水王发的一个帖子删掉,也就是--,如果 == 0,那么说明当前的候选不是水王,假设

个人项目4——找水王

设计思想: 遍历一遍ID列表,进行两两比较 如两个ID不同就都删掉 如果相同,出现这个ID的次数加一 水王的帖子超过一半,遍历到最后剩下的只有水王的ID 实现数据  :{ 8,9,8,7,8,1,2,5,4,8,8,5} 截图: 代码实现: #include<iostream>using namespace std; int Find(int* ID, int N) { int IDK; int ntimes; for (int j = ntimes = 0; j < N; j++) {

vc编程中的20点小笔记

机器学习是一项经验技能,经验越多越好.在项目建立的过程中,实践是掌握机器学习的最佳手段.在实践过程中,通过实际操作加深对分类和回归问题的每一个步骤的理解,达到学习机器学习的目的. 预测模型项目模板不能只通过阅读来掌握机器学习的技能,需要进行大量的练习.本文将介绍一个通用的机器学习的项目模板,创建这个模板总共有六个步骤.通过本文将学到: 端到端地预测(分类与回归)模型的项目结构. 如何将前面学到的内容引入到项目中. 如何通过这个项目模板来得到一个高准确度的模板. 副诼匚盼胁臼匾膊讶赖期放判鼻懒合谖

课堂练习------寻找水王

•三人行设计了一个灌水论坛.信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子.坊间风闻该“水王”发帖数目超过了帖子数目的一半. •如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗? 1 #include<iostream.h> 2 int main() 3 { 4 int water; 5 int a[10]={1,5,2,5,3,5,4,5,5,5}; 6 int j,k=1

水王继续

一.题目要求 随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID.据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗? 二.设计思路 三个人的发帖数量都超过了四分之一,所以四个一组,都不一样的消去,最后剩下的就是那三个了. 三.设计代码 1 #include<iostream.h> 2 int main() 3 { 4 int ID[10]={1,2,3,4,4,3,2,2,3,4}; 5 int ID_NULL;//定义一个不存在的ID 6 int s

课堂练习——查找水王续

一.设计思路 题目要求: 三人行设计了一个灌水论坛.信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子.坊间风闻该“水王”发帖数目超过了帖子数目的一半. 如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?(参考核心代码) 随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID.据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗? 设计思路:   

软件工程随堂小作业—— 寻找“水王”(C++)

一.设计思路 (1)输入发帖ID记录表 (2)从第一个ID开始,与后续的发帖ID进行比较,若相同计数器则加一,否则减一.若计数器的数值被减为零,则重新选取当前ID开始记录比较. (3)输出结果 二.源代码 1 // shuiwang.cpp : Defines the entry point for the console application. 2 // 3 4 #include "stdafx.h" 5 #include "iostream.h" 6 #def

课堂练习——找“水王”

一.题目与要求 题目.三人行设计了一个灌水论坛.信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子.坊间风闻该“水王”发帖数目超过了帖子数目的一半. 要求.如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗? 二.设计思路 首先看到这道题,最基础的解法就是统计每个id发帖的数量,最后比较大小,这样就可以找到“水王”,不过,无疑这种方法是最麻烦的,时间复杂度为O(n^2); 那么,要降