递归,不撞南墙不回头。
大致框架void dfs(int step){
if(判断边界) {达到边界时return}
尝试每一种可能 for(i=0;i
具体例子
OOO+OOO=OOO,O中分别填入1-9使等式成立(用c语言实现)
//深度优先搜索介绍
//auther gaofeimax
#include
int n,book[10],a[20],total;
int sum(int t){
return 100*a[t]+10*a[t+1]+a[t+2];
}
void dfs(int step){
int sum(int t);
int i;
if(step==9){
if(sum(0)+sum(3)==sum(6)){
total++;
return;
}
}
else{
for(i=1;i<=9;i++){
if(book[i]==0){
book[i]=1;
a[step]=i;
dfs(step+1);
book[i]=0;
}
}
return;
}
}
int main(){
dfs(0);
printf("%d",total/2);
return 0;
}



