课堂练习-找水王续
2015-04-29 09:38
204 查看
一、题目要求
三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。 如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?(参考核心代码) 随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID。据统计他们每个人的发帖数量都超过了1/4,你能从发帖列表中快速找到他们吗?
二、设计思想
这个找水王程序大致思想还是消消乐的问题,只不过上次是两个不同ID的则消除,而由于这次找的是三个水王,就变成了三个不同的ID则消除。
三、代码实现
四、实现截图
五、个人总结
在编程之前,一定要把大致思路理清,不要盲目的直接编程,这样才会省时省力,少走弯路。
三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。 如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?(参考核心代码) 随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID。据统计他们每个人的发帖数量都超过了1/4,你能从发帖列表中快速找到他们吗?
二、设计思想
这个找水王程序大致思想还是消消乐的问题,只不过上次是两个不同ID的则消除,而由于这次找的是三个水王,就变成了三个不同的ID则消除。
三、代码实现
#include <iostream.h> #define MAXSIZE 100 void Find(int ID[], int len,int water[]) { int counter[3]; counter[0]=counter[1]=counter[2]=0; water[0]=water[1]=water[2]=-1; for(int i=0;i<len;i++) { if(counter[0]==0) { counter[0]++; water[0]=ID[i]; } else if(counter[1]==0) { counter[1]++; water[1]=ID[i]; } else if(counter[2]==0) { counter[2]++; water[2]=ID[i]; } else if(ID[i]==water[0]) { counter[0]++; } else if(ID[i]==water[1]) { counter[1]++; } else if(ID[i]==water[2]) { counter[2]++; } else { counter[0]--; counter[1]--; counter[2]--; } } } void main(int argc, char* argv[]) { int ID[MAXSIZE]; int number,WaterId[3]; cout<<"请输入帖子的数量:"; cin>>number; cout<<"请输入发帖ID:"; for(int i=0;i<number;i++) { cin>>ID[i]; } Find(ID,number,WaterId); cout<<"水王是:"; for(i=0;i<3;i++) { cout<<WaterId[i]<<"\t"; } cout<<endl; }
四、实现截图
五、个人总结
在编程之前,一定要把大致思路理清,不要盲目的直接编程,这样才会省时省力,少走弯路。
相关文章推荐
- 课堂练习-找水王续
- 4月24号周五课堂练习:找水王续
- 课堂练习找水王续
- 课堂练习——找水王续
- 课堂练习-找水王续
- 课堂练习-找水王续
- 课堂练习——找水王续
- 课堂练习-找水王续
- Android课堂学习笔记——课后练习
- java,课堂练习,
- 课堂练习 最大联通数组
- 课堂小练习(指针问题)
- 递归实现顺序输出整数-2017-2018-1 实验10.2 递归函数等(课堂练习)
- Day58-Oracle02 - 内连接、外连接、子查询(exists用法,关联/非关联子查询)、课堂练习(行列转换)、rownum和rowid
- CCNP课堂练习一:连接两个不同的路由器
- CCNA课堂练习一:路由器链路备份功能
- 课堂练习——四则运算(2)编程思路
- 课堂练习之四则运算加强版
- 课堂练习-最低价购书方案
- 3月20号周五课堂练习:结对开发----求二维数组组成的矩阵中子矩阵的最大值