题意:
6x6 的方格,沿着格子的边线剪开成两部分。
要求这两部分的形状完全相同。
如图就是可行的分割法。
试计算:
包括这 3 种分法在内,一共有多少种不同的分割方法。
注意:旋转对称的属于同一种分割法。
思路:
两个在6*6的方格内有两个图形完全相同,可以看出来,两个图形有对称中心的。由于我们是按照某条路径剪开方格得到两个图形,所以我们不考虑格子,只看线与线相交的点。可以看出对称的点是(4,4)(行列从1开始数)
那这道题该如何做呢?看见这类题第一时间想到深度搜索dfs。我们可以在搜索某个点(i,j)的同时,关注这个点(i,j)关于中心点(4,4)对应的点(8-i,8-j);比如我dfs搜索到了(1,1)这个点,那么对应的另一个点是不是就是(7,7)。如果我搜到了(2,3),对应的另一个点就是(6,5)。那么以(4,4)为起点进行深搜,当一个点搜到后,它和它的对称点一同被标记。当dfs搜索到方格的边界时,搜索结束,连接所有的点,就形成了一条分割线。沿着这条分割线可以剪出两个一样的图形。
但要注意旋转对称的属于同一种分割法,所以最终的结果要除以4,因为同一个图案,有朝着上下左右的四个摆放位置,但图案都一样。
试计算:
包括这3种分法在内,一共有多少种不同的分割方法。
注意:旋转对称的属于同一种分割法。
请提交该整数,不要填写任何多余的内容或说明文字。
#include <stdio.h>
int nxt[4][2]=