前言
用dfs枚举每一个方格
题目详情
解题代码
#include<iostream>
using namespace std;
const int N =10;
int n,ans;
bool row[N],col[N];
void dfs(int x, int y, int s)
{
if (s > n) return;
if (y == n) y = 0, x ++ ;
if (x == n)
{
ans++;
return;
}
dfs(x, y + 1, s);
if (!row[x] && !col[y])
{
row[x] = col[y] = true;
dfs(x, y + 1, s + 1);
row[x] = col[y] = false;
}
}
int main()
{
cin >> n;
dfs(0,0,0);
cout << ans;
return 0;
}