寻找发帖水王
《编程之美》的思路:如果一个ID的发帖数超过总数的一半,那么该ID在每个局部范围内也是超过一半的,因此用相互抵消的方法来确定发帖超过一半的ID。算法如下:
#include <stdio.h>#include <stdlib.h>#define NUM 10int get_post_king(int ID[], int N){ int candidate,i,times; for(times = i=0;i<NUM;i++){ if(times == 0){ candidate = ID[i]; times = 1; }else{ if(candidate == ID[i]) times++; else{ times--; } } } return candidate;}int main(){ int sample[NUM] = {6,6,6,4,5,6,6,9,8,6}; printf("%d\n",get_post_king(sample,NUM));}