递归,不撞南墙不回头。
大致框架void dfs(int step){ if(判断边界) {达到边界时return} 尝试每一种可能 for(i=0;i具体例子 OOO+OOO=OOO,O中分别填入1-9使等式成立(用c语言实现)
//深度优先搜索介绍 //auther gaofeimax #includeint 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; } 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)