问题描述:已知某个论坛的帖子汇总列表,要找出其中的水王(即发的帖子数超出了总帖子数的一半),求解水王的IP地址;
设计思想:故名思意,一个帖子对应着一个IP地址,只要设计相关的思路遍历一遍帖子汇总列表,即可找出水王的IP地址;
具体做法:(1)设计一个变量作为遍历过程中来判断是否变换IP地址的基准,而基准指的是如若此变量小于0,则再进行遍历下一个IP地址前,把当前的IP地址赋予另一个变量;
(2)这里所指的另一个变量指的是基IP地址,然而之前作为判断IP地址是否更换的变量是根据把当前的IP地址和基IP地址进行比对后决定的,如若相等,则让基准变量增加一,否则减一;
(3)然而都知道,我们是根据基准变量的取值大小来决定水王的IP地址的(水王的IP地址即是当基准变量最大时,所遍历到的IP地址)。
源代码:
//已知发表帖子列表,找出其中的水王(即发表的帖子数大于总贴的一半) //李敏,May 16th,2015 #include <iostream> using namespace std; void main() { int n,i,a[1000],t,p,q,m,l; cout<<"请输入共发表的帖子总数:"<<endl; cin>>n; cout<<"请依次输入各个帖子的IP地址"<<endl; for(i=0;i<n;i++) { cin>>a[i]; } t=0; q=a[0]; p=0; for(i=1;i<n;i++) { if(a[i]==q) { t++; if(t>=p) { p=t; m=a[i]; } q=a[i]; } else { l=t--; if(l<0) { t=0; q=a[i]; } else { t=l; q=a[i]; } } } cout<<"找到的水王的IP地址为:"<<m<<endl; }
实验结果截图:
编程总结:(1)说实话,第一次看问题的时候真心把题目的意思给理解错了,后来在老师的提醒后,理解了题目的意思,但还没有想出解决的方法;
(2)在听了同学的思路后,有点感觉了,但是感觉对于此设计还有些模糊;
(3)后来自己举了一些例子后,再根据课上同学的思路,发现了例子中存在的规律了,基本上再设计代码时已经没有问题了;
(4)在对代码进行设计中,虽然遇到了一些问题,但是再好好思考后还是解决了;
(5)总之,无论在解决什么问题是时,动脑,动手,善于沟通交流,再加上坚持不懈的努力总会有一些收获的!
时间: 2024-10-28 10:29:48