我的一本教科书中有一个问题如下。
你会得到总统选举的结果。每张选票都是一张一张的,每张选票上都写着候选人的名字(假设候选人的名字用数字表示)。在公布结果之前,候选人的总数和投票的人数是未知的。所有有效的选票都以一张作为输入,这个过程总共重复2次。我们只有 2 个简单的变量可以用于整个过程。您必须设计一种算法,该算法可以确定是否有候选人获得了投票者的多数票(即超过 50%)。如果存在这样的候选人,请打印候选人姓名,否则打印“blah blah blah”
现在我首先想到的是使用Boyer-Moore 多数算法并不断更新多数和计数器下一个结果出现时立即变量。如果我没有说清楚,结果不会存储在数组或其他任何地方。你得到一张选票的通知,然后你计算(这一直持续到所有选票都用完,这意味着我无法访问任何以前的信息)。无论此信息是否存储在数组中,我知道我仍然可以运行该算法的第一次迭代以获得“可能的”多数结果,因为该算法总是产生一个。我的问题在于第二次迭代。我一次又一次地看到结果。我应该如何验证我的原始结果是否确实是多数?有没有其他方法可以让我只用 2 个变量来解决它?