蓝桥杯 17省赛 A4 方块分割(几何规律)

蓝桥杯 17省赛 A4 方块分割(几何规律)

标题:方格分割

6x6的方格,沿着格子的边线剪开成两部分。
要求这两部分的形状完全相同。

如图:p1.png, p2.png, p3.png 就是可行的分割法。

请添加图片描述请添加图片描述
请添加图片描述

试计算:
包括这3种分法在内,一共有多少种不同的分割方法。
注意:旋转对称的属于同一种分割法。

============================

思路:
以中心点(3 ,3)为原点,划分得到4个形状相等的象限,这使得很容易通过计算一个象限的情况而得到所有情况
以中心点为起点使用dfs,每次同时遍历一个点以及与中心点的对称的点,最后将结果/4(总共有4个一样的象限嘛)

public class 切割_dfs_4 {
	static int[][] a= {{0 ,1} ,{0 ,-1} ,{1 ,0} ,{-1 ,0}};
	static boolean vis[][] =new boolean[10][10];
	static int ans;
	public static void main(String[] args) {
		vis[3][3] =true;
		dfs(3 ,3);
		System.out.println(ans /4);
	}
	private static void dfs(int y, int x) {
		if(x == 0 || y == 0 || x == 6 || y == 6){
			ans++;
			return ;
		}
		for(int i =0 ;i <4 ;i ++) {
			int x1 =x +a[i][0];
			int y1 =x +a[i][1];
			
			int x2 =6 -x1;
			int y2 =6 -x2;
			
			//遍历方式(为什么只朝向一个象限延展 ,却同时标记对称位置  ->除去关于原点对称的情况
			if(x1 >=0 && y1 >=0 &&x1 <=6 &&y1 <=6) {
				if(!vis[x1][y1]) {
					vis[x1][y1] = vis[x2][y2] = true;
					dfs(x1,y1);
					vis[x1][y1] = vis[x2][y2] = false;
				}
			}
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肯尼思布赖恩埃德蒙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值