花了我40分钟,写出来的代码如下:
基本思想是:每次删除4个不同的id,直到最后不能删除为止,一定能够剩下3个不同的满足条件的id
-
C/C++ code
-
Type * Find(Type * ID, int N) { Type candidate[ 3 ]; int nTimes[ 3 ]; int nTimes_A,i,j,sum_flag = 0 ; for (i = 0 ; i < 3 ; i ++ ) nTimes[i] = 0 ; for (i = 0 ; i < N; i ++ ) { for (j = 0 ;j < 3 ;j ++ ) { if (candidate[j].is_empty()) { candidate[j] = ID[i]; nTimes[j] ++ ; } else { if (candidate[j] == ID[i]) { nTimes[j] ++ ; } else { sum_flag ++ ; } } } if (sum_flag == 3 ) { for (j = 0 ;j < 3 ;j ++ ) nTimes[j] -- ; for (j = 0 ;j < 3 ;j ++ ) { if (nTimes[j] == 0 ) { candidate[j].setempty(); } } } } return candidate; }
基本思想是:每次删除4个不同的id,直到最后不能删除为止,一定能够剩下3个不同的满足条件的id