寻找水王
题目:从发帖的目录中徐找出发帖数过半的“水王”
思路:由于水王的发帖数是总数的一半,所以需要遍历一遍发帖目录。用一个变量代表一个ID出现相同的次数,若下一个ID与上一个ID不同,则变量减一,反之加一;最后若变量大于零,则对应得ID就是水王,其中在变量小于等于零时,ID会变化(下面代码中的s)
代码:
#include<iostream> #include<string> using namespace std; int main() { string a[11]={"wshtl","乱清无","乱清无l","bingoing","乱清无","零夕","乱清无","主题远志","乱清无","wshtl ","乱清无"}; int k= 0; int i; string std; for(i = 0; i < 11;i++) { if(k == 0) { std = a[i]; k= 1; } else { if(std == a[i]) { k++; } else { k--; } } } cout<<"id的名单:"<<" "; for(i = 0; i < 11;i++) { cout<<a[i]<<" "; } cout<<endl; cout<<"水王的ID是"<<" "; cout<<std<<endl; return 0; }
截图:
总结:做这道题时,需要家主题的关键点“水王的发帖数是总数的一半以上”,并且我们需要摆脱之前的思路(遍历一遍,算出每一个ID的次数,最后比较大小求出水王)。换一个思路,并不是数出来,而是相消。