博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
课堂练习之《找水王》
阅读量:4970 次
发布时间:2019-06-12

本文共 981 字,大约阅读时间需要 3 分钟。

实验题目:

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

实现思路:

      起初的思想则是把所有的ID进行排序,找到中间的那个ID一定就是水王(前提是水王树木超过了一半,而且水王存在),但是这样就要遍历两次,时间复杂度就大了。后来根据课上的提示,ID在数组中,然后调用一个循环开始遍历,相邻两两进行比较,如果不相同则消掉,在数组中的编号也随之一起改变,指导遍历完毕,就能够找到水王了。

代码实现:

1 #include 
2 using namespace std; 3 4 int main() 5 { 6 //首先假定用户的ID列表为一个数组 7 int Id[30]={
1,2,2,4,2,1,3,2,6,5,2,4,2,2,1,2,3,2,2,2,4,4,5,2,2,2,1,2,1,2}; 8 int ShuiW=Id[0]; //默认水王为第一个Id 9 int count=1;10 for(int i=1;i<30;i++)11 {12 if(Id[i]==ShuiW) //判断与默认水王是否一样13 count++;14 else 15 count--;16 if(count==0) //当count为0时候,说明这个水王不能占一半,则水王变为下一个。17 {18 ShuiW=Id[i];19 count++;20 }21 }22 if(count) //当count为0时候,没有水王。23 cout <<"水王Id:"<
<

运行截图:

 

转载于:https://www.cnblogs.com/cnyulei/p/5520722.html

你可能感兴趣的文章
C#中读取存储过程中临时表中的数据的写法
查看>>
选择器
查看>>
搭建zipkin参数配置
查看>>
如何使用 onscroll / scrollTo() / scrollBy()
查看>>
初识Django
查看>>
DOM事件处理
查看>>
从visio数据库脚本生成添加 MS_Description 的sql脚本
查看>>
课程总结
查看>>
[USACO09JAN] 气象测量/气象牛The Baric Bovine 解题报告(DP)
查看>>
MySQL执行带out的存储过程
查看>>
文件操作
查看>>
第一次Eclipse小插件开发记录(一):基本介绍
查看>>
C#修改上传文件的大小
查看>>
序列化和反序列化
查看>>
c#返回值的理解
查看>>
敏捷宣言
查看>>
valgrind 详细说明
查看>>
SqlServer扩展存储过程
查看>>
Dev Express Report 学习总结(七)Dev Express Reports 常见知识点总结
查看>>
新整理mongo3.2用户创建的基本使用
查看>>