查找水王01
- 设计思想:
子函数 bijiao ()是查找水王的计算思想,首先定义整型count来计数水王出现发的次数,定义字符型k来代替“水王”初始设为字符串数组中第一个数组,所以子函数中可能会出现多个“水王”。For循环语句从i=1开始用k和字符传输组中的元素作比较如果相同计数count加1。如果count不等于零减1;如果元素既不相同count又不满足不为零将count置为零;接下来当count=0时k的值改变,k=ArrayOfking[i];count同时置为1;循环最后输出最后水王k;主函数中定义字符串并赋值;调用子函数运行输出最后结果;
例子: asdv,asdv,ggg,kkk,long ,asdv,asdv;
初始k = asdv ,count = 1;
k和 下一个字符串比较相同 count加1,count=2;
k和字符串 ggg比较 发现不相同count又不为零count减1,count=1;
count不为零 继续i++,k 和kkk比较不相同count减1,count=0,k值改变,k=kkk count=1;
k和long作比较不相同count减1 count=0,k值改变 变为long count=1;
k和asdv 作比较不相同count 减1 count=0,k=asdv count=1;
k和asdv作比较相同 count加1;
count=0;
输出没有水王;
输出水王 k(asdv);
1 // 吕兰兰 信1301-2 20133056 2 //查找水王 水王发帖数目超过帖子数目的一半,假设有一份列表在里边快速找到水王,不用排序的思想如何实现 3 #include<iostream> 4 using namespace std; 5 void bijiao(string ArrayOfking[]) 6 { 7 int count=1;//用来计算水王出现的次数,只有当count=0时水王的值才会变化; 8 string k=ArrayOfking[0];//首先默认水王为第一个数字; 9 for(int i=1;i<10;i++) 10 { 11 if(k==ArrayOfking[i]) 12 { 13 count++;//水王第二次出现+1; 14 } 15 else 16 { 17 if(count!=0) 18 { 19 count--;//如果count的值不为0且两个数字不相等,计数水王个数减1; 20 } 21 else 22 { 23 count=0; 24 } 25 } 26 if(count==0)//如果计数水王个数变为0,则水王的值变换为第i个值 ,count的值重新记为1 27 { 28 k=ArrayOfking[i]; 29 count=1; 30 } 31 } 32 cout<<"水王为:"<<k; 33 34 } 35 36 int main() 37 { 38 string ArrayOfking[10]={"男神宋仲基","宋慧乔","男神宋仲基","黄渤","男神宋仲基","男神宋仲基","张艺兴","男神宋仲基","huanglei","男神宋仲基"};//定义字符串数组; 39 bijiao(ArrayOfking);//调用函数; 40 }
个人总结: 本次实验的设计思想是在老师的指点和同学的帮助下得到的,程序代码自己编写,总的来说还是比较简单的,只要思想正确代码实现起来比较简单;