摘要: 链接把迭代加深理解错了 自己写了半天也没写对所谓迭代加深,就是在深度无上限的情况下,先预估一个深度(尽量小)进行搜索,如果没有找到解,再逐步放大深度搜索。这种方法虽然会导致重复的遍历 某些结点,但是由于搜索的复杂度是呈指数级别增加的,所以对于下一层搜索,前面的工作可以忽略不计,因而不会导致时间上的亏空。IDA*就是一个加了层数限制depth的DFS,超过了限制就不在搜索下去,如果在当前层数没有搜到目标状态,就加大层数限制depth,这里还只是一个IDA算法,并不是A*的。当然我们可以用A*的估计函数去剪枝,如果当前深度d+h()>depth的时候就可以不再搜索下去了,这样就是IDA*了。 阅读全文
posted @ 2013-08-27 22:09 _雨 阅读(640) 评论(0) 推荐(0) 编辑
摘要: 这次题有点水 涨了不少A题 转成数字 排下序就好B题 直接模拟C题 dfs 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define N 1010 8 char s[12]; 9 int a[12],o,m,k[1010],flag;10 void dfs(int pre,int s1,int s2,int v)11 {12 int i;13 if(flag)14 return ;15 if(v)16 k[v] = pre;17 ... 阅读全文
posted @ 2013-08-27 14:42 _雨 阅读(246) 评论(0) 推荐(0) 编辑