我们还是从一个例子着手吧。
例1.
有如下的数学算式:SEND+MORE=MONEY,每个字母代表一位从0到9的数字,首位不能为0,每个字母所代表的数字不同,请问各个字母所代表的数字是多少?
这个问题有唯一解答:9567+1085=10652
这就是一个条件约束问题。解决此类问题最简单的方法可以描述为'产生并测试'。我们很容易看出这个问题
有8个字母,而每个字母又可以是从0到9,即有10种可选方案。所以总共的可选答案是8^10种。产生程序将产生这8^10种可能解答,
然后使用测试程序来测试所产生的解答的正确性。下面列出这个问题的约束条件:
1. 8个字母所代表的数字两两不同。
2. S M不能为零
3. S*1000+E*100+N*10+D + M*1000+O*100+R*10+E = M*10000 +
O*1000+N*100+E*10+Y
只要产生的某