Project Euler Problem 60
两种思路都是枚举,不过处理细节有些不同。
假设:题目中描述的关系,我们称之为关系P,两个素数满足关系P。 我们已经生成一个素数表。其中存放着从小到大的很多素数。
第一种思路:
1 我们为每一个素数,生成一个链表,链表中从小到大存放与表头元素满足关系P的素数。
2 任何两个链表只要非表头元素部分存在相投元素,那么它就是一个满足关系P的三元组。
3 在找到的一个三元组的基础上不断扩充知道找到一个五元组。当然此五元组可能是解,也可能不是。
找到其他满足此种关系的五元组,然后选择一个最小。
第二种思路:
把一维的素数表扩展成为2维的满足关系P的二维表。只要两个素数i,j满足关系P,这map[i][j]=1;(这里可以利用映射来节约空间,也可以不用做这一优化)
然后问题转化为找一个彼此满足map[i][j]=1的五元组。用枚举。
问题启示:两种扩展一维为二维的思路。
Answer:26033