50pts TLE 求助
#include <bits/stdc++.h>
using namespace std;
long long ans=0;
bool b[10][10];
short n,m;
int jie(int a){
if(a==1) return 1;
return a*jie(a-1);
}
void dfs(int d){
if(d==m){
ans++;
return;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(b[i][j]==0&&b[i-1][j]==0&&b[i+1][j]==0&&b[i][j-1]==0&&b[i-1][j-1]==0&&b[i+1][j-1]==0&&b[i][j+1]==0&&b[i-1][j+1]==0&&b[i+1][j+1]==0) {
b[i][j]=1;
dfs(d+1);
b[i][j]=0;
}
}
}
return;
}
int main() {
cin>>n>>m;
for(int i=1;i<10;i++) {
for(int j=1;j<10;j++) {
b[i][j]=0;
}
}
dfs(0);
ans/=jie(m);
cout<<ans;
return 0;
}