□□□ + □□□ = □□□ 将1~9放入□中使其成立
深搜。。。
#include <stdio.h> #include <stdlib.h> int a[10],visit[10],total = 0; void dfs(int step) { int i; if(step == 10)//满足个数输出 { if(a[1]*100 + a[2]*10 + a[3] + a[4]*100 + a[5]*10 + a[6] == a[7]*100 + a[8]*10 + a[9]) { total++; printf("%d%d%d + %d%d%d = %d%d%d\n",a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]); } return; } for(i=1;i<=9;i++) { if(visit[i] == 0) { a[step] = i;//存入数字 visit[i] = 1;//标记已访问 dfs(step+1);//递归下一个 visit[i] = 0;//回溯 } } return; } int main() { dfs(1); printf("total = %d\n",total); return 0; }