蓝桥杯:方格分割 特别的dfs思路 以及一些dfs的总结

题目描述6x6的方格,沿着格子的边线剪开成两部分。要求这两部分的形状完全相同。如图就是三种合法的分割:试计算:包括这3种分法在内,一共有多少种不同的分割方法。注意:旋转对称的属于同一种分割法。请提交该整数,不要填写任何多余的内容或说明文字。思路这题一开始我是想暴力列举18个点,然后判断,发现时间复杂度太高然后我又想对格子dfs,发现dfs无法做到那种有分叉的,弯曲的形状,遂放弃后...
摘要由CSDN通过智能技术生成

题目描述

6x6的方格,沿着格子的边线剪开成两部分。要求这两部分的形状完全相同。
如图就是三种合法的分割:
在这里插入图片描述
试计算:包括这3种分法在内,一共有多少种不同的分割方法。注意:旋转对称的属于同一种分割法。

请提交该整数,不要填写任何多余的内容或说明文字。

思路

这题一开始我是想暴力列举18个点,然后判断,发现时间复杂度太高

然后我又想对格子dfs,发现dfs无法做到那种有分叉的,弯曲的形状,遂放弃

后来想了想:我用剪刀剪,一刀肯定可以完成,而且剪的痕迹要对称,剪到边界,我就完工了啊

恍然大悟:

这题dfs的不是格子,而是dfs剪刀剪切的痕迹

因为一刀可以切完,代表没有分叉的路,剪切的痕迹对称,就是dfs的约束条件,剪切到边界完工,这是dfs的边界条件啊

既然不是对格子dfs,每次我们又只能剪切在格子的边上,那么将方格抽象成剪刀可以经过的点,那么这个点阵的大小是 7x7
在这里插入图片描述

如图:剪切的痕迹关于中心点对称
在这里插入图片描述

因为剪切的痕迹关于点阵的中心对称

  • 我们从点阵的中心出发,向任意方向上的,剪刀未经过的点移动,直到到达点阵的边界

到达边界,说明已经全部被切开了,那么我们找到了一种可能的答案

注意:最后的答案要除4,因为一张正方形的纸,用相同的剪切手法,从四个边入手,得到的形状会是一样的,而我们剪切的时候没有考虑到这个,故会出现中心对称的情况(同一种手法,可以出现4次)

代码

#include <iostream>

using 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值