题目链接: 传送门
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std
;
int n
, cur
, num
;
int main() {
while(scanf("%d", &n
) != EOF) {
scanf("%d", &cur
);
int t
= 1;
for(int i
= 1; i
< n
; i
++) {
scanf("%d", &num
);
if(t
<= 0) {
cur
= num
;
t
= 1;
}
if(num
== cur
) t
++;
else t
--;
}
printf("%d\n", cur
);
}
}
这道dp题可以使用摩尔投票法来做 摩尔投票法大概思路就是每次取第一个数字暂且叫它当前数字这个数字,设一个计数器用于存储这个数字的个数(一开始处使化为1)。把这个当前数字往后与其他数字比较,当遇到相同的数字时,计数器加一;当遇到不相同的数字时,计数器减一。以此类推,直到计数器减到变为0时,就更新当前数字,同时把计数器重置变为1。 按照这个思路就可以做这道题了,具体过程代码中有注释,注意多组输入数据。
转载请注明原文地址: https://lol.8miu.com/read-25422.html