也有关于程序设计的,提醒自己要注意:
1. 定义基本操作是从0开始还是从1开始,结果表明,从0开始更好;
从1开始容易写错;也许用enum更好;
2.表中存储6种操作还是12种操作,还是18种操作;
涉及到空间的关系,以及要用何种方式计数步数,以及对速度的要求;
18*18也只意味着分支表是6*6的 9 倍大小,可以接受,就用18种;
存储顺序以方便操作为宜;
3.pack二进制、三进制的时候,要注意都用同一种次序;高低位置不要弄反了;
这一次写的程序同以前的程序反掉了,测试起来也很麻烦;
4.一切的差异是由于次序的差异造成的。 5. 关于编程:开始编程,不要考虑太多,考虑太多,反而容易引起混乱。
程序也是慢慢长大的,不是一下自就拥有成熟的体型。 我也来支持一个,其实我是想写个手机上用的优化解程序 另外补充一点,IDA*算法是A*算法的一种(迭代加深A*算法),属于启发式搜索算法,人工智能基本算法之一。
[ 本帖最后由 oyyq99999 于 2010-4-26 11:40 编辑 ] 非常感谢狼的支持!
感谢大家的支持。
这一层发重写的代码了
基本按照原思路重写了,用c语言。就IDA*的框架没有改动,因为不会改:lol
效率没有提高,文件数目有减少,应该好读些了。
如果发现错误,欢迎指正。
暂时叫 ya2phase
( yet another 2-phase的意思 )
这个名字最有普遍性,谁的程序都可以这样叫。
这一层帖的代码由于有较多编译警告和错误,已经删除。
帖在后面。
教训:
编译时要开启警告,W3。
过多依赖编译器检查,也不是好习惯。
[ 本帖最后由 aubell 于 2010-4-29 12:48 编辑 ] 先下载了,等一下编译,
用VS命令行编译了,怎么一运行就崩溃啊?
[ 本帖最后由 yq_118 于 2010-4-28 23:54 编辑 ] LS,真的有这么惨吗?是按照“说明”的顺序运行的吗?
因为主程序省略了错误检查,输入的顺序要按照mike的顺序。
sample.bat给出的是一个"cube in cube"图案。
[ 本帖最后由 aubell 于 2010-4-29 00:13 编辑 ] 1>e:\projects\create_table\cube.c(161) : warning C4013: “strcpy”未定义;假设外部返回 int
1>e:\projects\create_table\cube.c(172) : warning C4013: “strcmp”未定义;假设外部返回 int
cube.c里面是不是没有包含string.h