book[]数组对元素进行标记,进行判断遍历
#include<stdio.h>#include<windows.h>int a[10], book[10], n;void dfs(int step){int i;if (step == n + 1){for (i = 1; i <= n; i++){printf("%d ", a[i]);}printf("\n");//return;}for (i = 1; i <=n; i++){if (book[i] == 0){a[step] = i;book[i] = 1;dfs(step + 1);book[i] = 0;}}}int main(){scanf_s("%d", &n);dfs(1);system("pause");return 0;}
深度优先搜索基本模型
void dfs(int step)
{
判断边界
尝试每一种可能 for (int i = 1; i <= n; i++)
{
继续下一步dfs(step + 1);
}
返回
}