题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
6x6的方格,沿着格子的边线剪开成两部分。 要求这两部分的形状完全相同。
如下就是三种可行的分割法。
试计算: 包括这 33 种分法在内,一共有多少种不同的分割方法。 注意:旋转对称的属于同一种分割法。
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
【代码及注释】
#include<bits/stdc++.h>
using namespace std;
int vis[10][10],cnt;
int d[5]={-1,0,1,0,-1};
void dfs(int x,int y)
{
if(x==0||y==0||x==6||y==6)
{
cnt++;
return;
}
for(int i=0;i<4;i++)
{
int xx=x+d[i],yy=y+d[i+1];
{
if(!vis[xx][yy])
{
vis[xx][yy]=1;//在选择的位置涂色
vis[6-xx][6-yy]=1;//在对称的位置涂色
dfs(xx,yy);
vis[xx][yy]=0;
vis[6-xx][6-yy]=0;
}
}
}
}
int main()
{
//6*6的方格关于(3,3)中心对称
vis[3][3]=1;
dfs(3,3);
cout<<cnt/4;
return 0;
}