搜索回溯我现在花了很长时间理解了下但我还是写不出来
很苦恼感觉有一定思路了但是动手又不知道怎么写慢慢学吧
#include <bits/stdc++.h>
using namespace std;
int N;
long long ans = 1; //刚开始什么也不放也属于一种答案
bool visited[10]; //标志被放置的列
void dfs(int step) //表示从第step行开始放
{if (step > N)return; //如果超过规定的棋盘边界N,跳出。for (int i = 1; i <= N; i++){if (!visited[i]) //如果这一列没有被放置{visited[i] = true; //在这个位置放置它ans++; //该情况的答案+1dfs(step + 1); //肯定不能在同一行放了,跳到下一行visited[i] = false; //回溯}}//dfs(step + 1); //这个地方我不太清楚为什么
}
int main()
{cin >> N;dfs(1); //从第一行开始搜cout << ans;return 0;
}