这个就是"hash"的妙用了。你不能做两两比较,因为这样会导致计算量变成N^2的 简单的办法就是对于每个考生的答案生成一个hash码,这样我们只要比较对应的hash 码一样的情况一样就可以了。 问题的关键变成怎么去做hash,这需要根据具体情况进行设计,一个草案是(楼主要根据这个方向自己充实,我不会给你提供代码或者提供更复杂的设计的): a) 把选择题每几题进行一个组合,假定每个题目有四种答案,需要占据2bit数据,这样一个16位的数据,我们可以表达8个题目的答案。这样我们每8题一组,填充成一个16bit的整数(也就是一个WORD) b) 对于一份考卷中,我们可以得到一组这样的WORD,我们把他们彼此异或,得到一个WORD c) 建立一个有65536个元素的array,每个array里包含一个链表,第n个链表中保存的元素是上述方法计算得到的hash code为n的试卷
arong的看法有不足。因为考试作弊的形势已经不是那么简单了。作弊的人会有意将其中的一些题目做的不一样,这样就失去了比较的意义。要求的是做错的题的相似率。我认为没有一个很好的方法来做出判断。再说了,譬如张三和李四都做只错了一道题,错的一样,他们考试坐在一起。这样就没有办法判定,因为大家很可能掉进题目设置的陷阱之中,这样错的一样的可能性就会非常大。一个典型的例子是我上初中的时候学英文,looking forward to 后面跟随动名词,是个特例,但是很多人都不慎错选了动词原型。