标题:方格分割
6x6的方格,沿着格子的边线剪开成两部分。
要求这两部分的形状完全相同。
如图:p1.png, p2.png, p3.png 就是可行的分割法。
试计算:
包括这3种分法在内,一共有多少种不同的分割方法。
注意:旋转对称的属于同一种分割法。
请提交该整数,不要填写任何多余的内容或说明文字。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std; //方格分割
int maze[7][7];
int path[7][7];
int dx[4]={-1,0,1,0};
int dy[4]={0,-1,0,1};
int cnt=0;
void dfs(int x,int y)
{
if(x==0 || x==6 || y==0 || y==6)
{
cnt++; //print(); //printf("cnt = %d\n",cnt);
return ;
}
for(int i=0;i<4;i++)
{
int ddx,ddy;
ddx=x+dx[i];
ddy=y+dy[i];
if(path[ddx][ddy]==0) continue;
path[ddx][ddy]=0;
path[6-ddx][6-ddy]=0;
dfs(ddx,ddy);
path[ddx][ddy]=-1;
path[6-ddx][6-ddy]=-1;
}
}
int main()
{
memset(path,-1,sizeof(path));
path[3][3]=0;
dfs(3,3);
printf("%d\n",cnt/4);
}