6x6的方格,沿着格子剪开成两部分,要求两部分的面积完全相等,计算一共有多少种分法
#include<iostream>
using namespace std;
int dx = { 1,-1,0,0 };
int dy = { 0,0,-1,1 };
const N = 6;
bool visited[N + 1][N + 1];
int answer = 0;
void dfs(int x, int y)
{
if (x == 0 || x == N || y == 0 || y == N)
{
ans++;
return;
}
for (int i = 0;i < 4;i++)
{
int nx = x + dx[i];
int ny = y + dy[i];
if (!visited[nx][ny])
{
visited[nx][ny] = true;
visited[N - nx][N - ny] = true;
dfs(nx, ny);
visited[N - nx][N - ny] = false;
visited[nx][ny] = false;
}
}
}
int main()
{
visited[N / 2][N / 2] = true;
dfs(N / 2, N / 2);
cout << ans / 4;
return 0;
}