/* * Author: 冷却 * Date: 2009年7月3日 * E-mail: leng_que@yahoo.com.cn * Description: 通过DFS(深度优先搜索)算法,再加上一个简单的剪枝技术,很快就能搜索到所有的解 */ //题目要求:每个字母代表一个数字,且不能重复。并且要使竖式成立。 // s e t d //+ m o r d //--------- //m o t e y //分析:考虑到 m 为 s+m 后的进位,则m必为0或1。 //注意:由于题目没有指明m是否可以为0,所以我认为m是可以为0的。 #include <iostream> using namespace std; int main(void) { int s,e,t,d; int m,o,r,y; int sum,tmp,i; for ( m=0; m<=1; m++ ) { for ( o=0; o<=9; o++ ) { if ( o==m ) continue; for ( r=0; r<=9; r++ ) { if ( r==m || r==o ) continue; for ( d=0; d<=9; d++ ) { if( d==m || d==o || d==r ) continue; for ( s=0; s<=9; s++ ) { if ( s==m || s==