题目:
这次的题目是对第一次题目的一个扩展:随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID。据统计他们的发帖数量超过了总的1/4,如何从发帖列表中快速找到他们?
程序设计思想:
这次程序的思路和上次思路一致,不同的是这次需要三个计数器。
源代码:
#include <iostream> #include <string> using namespace std; #define N 100 int main() { int water_king[3]; //设置三个变量,用来记录ID号 int ID[N], a ,b; int num = 0; int count[3] = { 0 }; //设置三个变量,用来计数,记录ID号出现的个数 bool flag = false; cout << "请输入帖子的个数:" << endl; cin >> b; cout << "请输入ID:" << endl; while (cin >> a) //输入数组 回车结束 { ID[num++] = a; if (num > b) { cout << "输入ID数与帖子数目不匹配" << endl; return 0; } else { if (getchar() == ' ') //换行停止 { break; } } } for (int i = 0; i < num; i++) { flag = false; for (int j = 0; j < 3; j++) { if (count[j] == 0) { continue; } if (water_king[j] == ID[i]) { count[j]++; flag = true; } } if (flag == true) { continue; } for (int j = 0; j < 3; j++) { if (count[j] == 0) { water_king[j] = ID[i]; count[j]++; flag = true; break; } } if (flag == true) { continue; } for (int j = 0; j < 3; j++) { count[j]--; } } cout << "三个小水王ID 分别为: " << endl; cout << water_king[0] << " " << water_king[1] << " " << water_king[2] << endl; }
结果截图:
当所输入的帖子数目与ID数不一致时
一致时找出水王
总结:虽然这次寻找水王的题目是在第一次的基础上进行的,设计思路也是来源于上次,但是这次的程序比上次的要复杂,因为三个“小水王”需要考虑的因素就要比第一个程序考虑的要多,需要要到三个计数器,在今后的编程中还是要多思考。