#include <bits/stdc++.h>
#define HASH_SIZE 362881
int dx[] = {0, 1, 0, -1};
int dy[] = {1, 0, -1, 0};
int arr[12] = {0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1};
int g[3][4];
void dfs(int x, int y)
{
int i;
int move_x, move_y;
g[y][x] = 0;
for (i = 0; i < 4; i++)
{
move_x = x + dx[i];
move_y = y + dy[i];
if (move_x >= 0 && move_x <= 3 && move_y >= 0 && move_y <= 2 && g[move_y][move_x])
dfs(move_x, move_y);
}
}
int check()
{
int i, j;
int cnt = 0;
for (i = 0; i < 3; i++)
for (j = 0; j < 4; j++)
g[i][j] = arr[i * 4 + j];
for (i = 0; i < 3; i++)
for (j = 0; j < 4; j++)
if (g[i][j])
{
dfs(j, i);
cnt ++;
}
if (cnt == 1)
return 1;
return 0;
}
int main()
{
int count = 0;
do
{
memset(g, 0, sizeof(g));
if (check())
count ++;
}
while (std::next_permutation(arr, arr + 12));
printf("%d\n", count);
return 0;
}
01-24
12-13
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交