第八届蓝桥杯 JavaA 方格分割
标题:方格分割
6x6的方格,沿着格子的边线剪开成两部分。
要求这两部分的形状完全相同。
如图:p1.png, p2.png, p3.png 就是可行的分割法。
试计算:
包括这3种分法在内,一共有多少种不同的分割方法。
注意:旋转对称的属于同一种分割法。
请提交该整数,不要填写任何多余的内容或说明文字。
法一(最优):
思路:
从点(4,4)向边缘划线。由于旋转对称属于同一种,故结果除以4。
import java.util.Scanner;
/**
* 旋转对称属于同一种,故结果除以4
*
* https://blog.csdn.net/y1196645376/article/details/69718192/
*
*/
public class 结果填空4方格分割 {
static Scanner input = new Scanner(System.in);
static boolean[][] vis = new boolean[8][8];
static int count;
public static void main(String[] args) {
dfs(4, 4);
System.out.println(count / 4);
}
public static void dfs(int x, int y) {
if (x == 1 || x == 7 || y == 1 || y == 7) {
count++;
return;
}
if (vis[x][y])
return;
vis[x][y] = true;
vis[8 - x][8 - y] = true;
dfs(x - 1, y);
dfs(x + 1, y);
dfs(x, y - 1);
dfs(x, y + 1);
vis[x][y] = false;// 回溯
vis[8 - x][8 - y] = false;
}
}