1071:模拟+剪枝搜索。
1076:模拟。
1077:搜索。经典的八数码问题。用排列的奇偶性(parity of permutation)快速判断无解。搜索方法采用Best first,f(node)=Manhattan distance。所有已产生的节点同时用hash table和bucket array 保存,bucket[i] 按到达顺序保存所有 f(node) 属于其管辖区间的节点。搜索时,选择尚有待扩展节点的最小bucket的首节点作为当前扩展节点,扩展结束后,该bucket的队首指针进一,扩展得到的新节点用hash table判断是否已存在,如存在则舍弃,如不存在,添加到hash table和相应bucket的队尾。所有操作的平均时间复杂度皆为O(1),但得到的解不一定是最优解,反正题目也没要求。。。。。0 ms通过,嘻嘻!!
1078:DP。0-1 knapsack 问题的变形。对于整数a,b, 先找到a, b所有 的因子, 建立以a 的因子为行,b的因子为列的表格, 从1到100循环填充,第k次循环后,num=(i,j) 不等于0,代表 a 的第 i 个因子, 和 b 的第 j 个因子,可以分别分解成1到 num 范围内的整数组的乘积,且两组数没有交叉。 实际的输入范围远远小于题目要求,根据题目要求,输入值可达到10^100,可是测试值都在16位整数范围内,事实上大多数不超过1000,绝对的阴险。。。。
