找水王(二)

题目:

1 三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。

2 如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?(参考核心代码)

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

设计思想

此次试验有三个水王都超过了发帖总数的1/4,可将每个水王ID都与其它Id进行抵消最后剩下的就是三个水王,由于用户ID数量不可见,不知道哪个ID是水王,可以将前三个不同ID置为水王ID,将它们与当前三个ID都不同的ID都进行抵消,“水王”中抵消后数量剩余为0的即被淘汰,将当前最新的不同ID补充为水王继续抵消,由于四个水王一起进行抵消,而三个真正的水王数量超出了所有水贴ID的1/4,所以最后剩余的一定是三个水王ID

 源代码:

#include<iostream>
#include<assert.h>
using namespace std;
int * search(int *userId,int n)
{
int curId[3]={0};//当前保存的三个不同ID
int curNum[3]={0};//当前三个不同ID各自的数目;
for(int i=0;i<n;i++)
{
if(curNum[0]==0&&userId[i]!=curId[1]&&userId[i]!=curId[2])//用户ID在当前ID中不存在相同ID且userID[0]的当前数量为0;
{
curNum[0]=1;
curId[0]=userId[i];
}
else if(curNum[1]==0&&userId[i]!=curId[0]&&userId[i]!=curId[2])
{
curNum[1]=1;
curId[1]=userId[i];
}
else if(curNum[2]==0&&userId[i]!=curId[0]&&userId[i]!=curId[1])
{
curNum[2]=1;
curId[2]=userId[i];
}
else if(userId[i]==curId[0])//用户ID和当前ID相同则当前ID数+1
{
curNum[0]++;
}
else if(userId[i]==curId[1])
{
curNum[1]++;
}
else if(userId[i]==curId[2])
{
curNum[2]++;
}
else if(userId[i]!=curId[0]&&userId[i]!=curId[1]&&userId[i]!=curId[2])//四种ID一起抵消
{
curNum[0]--;
curNum[1]--;
curNum[2]--;
}
}
return curId;//返回当前剩余的三个ID即为三个水王
}
void main()
{
int n;
int * userId;
int curId[3]={0};
int curNum[3]={0};
int i;
cout<<"输入灌水帖子数:";
cin>>n;
assert(n>0);
userId=new int[n];
cout<<"输入每一条灌水帖子id:"<<endl;
for(i=0;i<n;i++)
{
cin>>userId[i];
}
for(i=0;i<3;i++)//输出三个水王ID
{
cout<<*(search(userId,n)+i)<<"\t";
}
}

截图:

   

实验总结

在之前的基础上需要拓宽思路,四个连续的用户ID抵消很难实现,时间复杂度会很大,后来实际操作才发现只要将相同ID累加,不同于当前三个ID的四个一起抵消就可以了,,

转载于:https://www.cnblogs.com/TSbj/p/4588322.html

标题SpringBoot与Vue融合的垃圾分类回收网站研究AI更换标题第1章引言介绍垃圾分类的重要性,SpringBoot与Vue技术融合的优势,以及本研究的意义和价值。1.1研究背景与意义分析当前垃圾分类的紧迫性和SpringBoot与Vue在垃圾分类回收网站开发中的应用前景。1.2国内外研究现状概述国内外在垃圾分类回收系统方面的研究现状和技术应用情况。1.3论文方法与创新点说明本文采用的研究方法和系统开发的创新之处。第2章相关技术概述简述SpringBoot和Vue的技术特点及其在垃圾分类回收网站中的应用。2.1SpringBoot框架介绍介绍SpringBoot框架的主要特点和优势。2.2Vue.js框架介绍阐述Vue.js框架的基本原理和应用范围。2.3SpringBoot与Vue的融合应用探讨SpringBoot后端与Vue前端如何有效融合,提升用户体验。第3章垃圾分类回收网站系统设计详细描述基于SpringBoot和Vue的垃圾分类回收网站的设计方案。3.1系统架构设计给出系统的整体架构设计,包括前后端分离的设计思路。3.2数据库设计介绍系统所使用的数据库结构设计和数据表关系。3.3界面设计阐述基于Vue的前端界面设计,包括用户交互流程和界面展示。第4章系统实现与测试详细介绍垃圾分类回收网站的实现过程和测试情况。4.1系统后端实现说明SpringBoot后端的具体实现,包括接口设计、业务逻辑处理等。4.2系统前端实现Vue前端的具体实现,包括组件开发、状态管理等。4.3系统测试与性能分析对系统进行功能测试和性能测试,分析系统的稳定性和响应速度。第5章结论与展望总结本文的研究成果,展望未来的研究方向和应用前景。5.1研究结论概括性地阐述本文的主要研究结论和系统的实际应用价值。5.2未来研究方向提出未来可能的研究方向,如系统优化、智能分类算法研究等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值