目录存档: 算法

21

某含AI的五子棋

陆陆续续写了一段时间的东西,虽然说是AI。。但实际上很挫。。稍微认真很容易赢

原理就是深度优先搜索估权。计算机落子时通过演算后面的几步,得到一个当前棋盘上权值最高的点落子。(并不一定是最优)

仍有很多问题:
 1.死连珠判断不严谨
 2.效率低(优化不好)
 3.权值估算很糟糕
 4.游戏模式局限性大(玩家只能执白棋)
 5.计算机思考不能终止(不过AI_LEVEL要是<=2的时候速度还是可以接受的,默认为2)
最近又开始搞别的了,所以暂时不会再改了。。代码贴出来各位可以参考一下

图形部分采用了炮姐的EGE图形库,完全满足了需要。不过我用的很糟糕(main函数XD)
要编译的话当然要装EGE咯,EGE库我已经放到代码包里了
最新版EGE请去这里下载:http://code.google.com/p/misaka/downloads/detail?name=ege20110724.7z
只想随便看看代码的话可以在线浏览:
CFive.cpp – http://codepad.org/385VhbJt
Game.cpp – http://codepad.org/V2z1QuoP
AI.cpp – http://codepad.org/WGeiZWKg
misc.h – http://codepad.org/oyX5iech

另外很多地方我#include <windows.h>来着。。其实只是为了malloc。。#include <malloc.h>就行了。。
代码依然不是很美,依然不满意,欢迎非喷性批评
–I'm getting bett

[……]阅读全文

19

化学方程式配平

最近学了点数学知识,况且考虑到算法一直是自己的弱项,就写了这个来练习一下……(同时也是受到了XiaoJ的启发)

 源代码下载地址:http://naylon.0ginr.com/download/ChemicalEquation.rar

 

Before:

上百度百科查了一下,化学方程式配平大概有以下几种方法:

1-最小公倍数法

2-观察法

3-奇偶配平法

4-待定系数法

5-化合价法

 

大概看了看,如果要让计算机求解,4自是最好的选择,可以编写算法,于是选4下手。

 

PART0:Example

先举个配平的例子,就用H2+O2=H2O吧,比较简单:

 

先设系数分别为X0, X1, X2,得

X0 H2 + X1 O2 = X2 H2O

 

于是可得方程组

2X0 = 2X2

2X1 = X2

 

显然,这样的方程组难以求解,于是设系数X0为1,可得

-2X2 = -2

2X1 – X2 = 0

 

这样就把配平的问题转化成了解n元线性方程组的问题,接下来就是直观的问题了:如何解?考虑到不同的方程式可能有n个未知数,所以要找一种通用的解n元线性方程组的方法。于是我使用了矩阵行列式的方法(关于行列式的具体内容可以参考附带的ppt,内容较多,不再阐述)。

 

接上

[……]阅读全文