回溯法浅谈
Posted wolf940509
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了回溯法浅谈相关的知识,希望对你有一定的参考价值。
回溯法是初学者学习暴力法的第一个障碍,所谓回溯就是指当把问题分成若干步骤并递归求解时,如果当前步骤没有合法选择,则函数将返回上一级递归调用,这种现象称为回溯。正是因为这个原因,递归枚举算法常被称为回溯法,应用十分普遍。
八皇后问题
1 int tot=0; 2 int c[maxn]; //c[x]表示x行所在的列数 3 void dfs(int n,int cur){ 4 if(cur==n) ++tot; 5 for(int i=0;i<n;i++){ 6 int flag=0; 7 c[cur]=i; 8 for(int j=0;j<cur;j++) 9 if(c[cur]==c[j]||(cur-c[cur]==j-c[j])||(cur+c[cur]==j+c[j])){ 10 flag=1; break; 11 } 12 if(!flag) 13 dfs(n,cur+1); 14 } 15 }
以上是关于回溯法浅谈的主要内容,如果未能解决你的问题,请参考以下文章