蓝桥杯-方格分割-python

简介: 蓝桥杯-方格分割-python

题目描述


本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

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

如下就是三种可行的分割法。

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


运行限制


  • 最大运行时间:1s
  • 最大运行内存: 128M

思路:

1.分割线一定会经过中心点,故我们在使用dfs深度优先搜索时要从(3,3)开始搜索,如果搜索到边界就停止搜索,计数

2.只要确定半条线的走向,就能依照关于原点对称的原则就可以找到另外半条线,具体体现在我们的代码中就是在标记了当前走到的点时,也要标记和它关于中心点(3,3)对称的点

3.在向四个方向搜索时,如果判断到移动后的点超出边界,则不进行搜索,如果该点被标记搜索过,也不进入搜索


代码:


1. vis=[[1]*7 for i in range(7)]
2. dir=[(-1,0),(1,0),(0,-1),(0,1)]
3. ans=0
4. 
5. def dfs(i,j):
6. global ans
7. if i==0 or j==0 or i==6 or j==6:
8.     ans+=1
9. return
10.   vis[i][j],vis[6-i][6-j]=0,0
11. for n in range(4):
12.     new_i = i+dir[n][0]
13.     new_j = j+dir[n][1]
14. if new_i<0 or new_j<0 or new_j>6 or new_i>6:
15. continue
16. if vis[new_i][new_j]:
17.       dfs(new_i,new_j)
18.   vis[i][j],vis[6-i][6-j]=1,1
19. 
20. dfs(3,3)
21. 
22. print(ans//4)


感谢蓝桥杯及华东理工大学罗老师的教程!

目录
相关文章
|
10天前
|
Python
python简单分割文件的方法(python经典案例)
这篇文章介绍了两种使用Python进行文件分割的方法:通过读取指定字节数分割大文件成小文件,以及通过行数将文本文件分割成多个小文件。
30 1
|
4月前
|
BI 测试技术 索引
Python学习笔记之NumPy模块——超详细(安装、数组创建、正态分布、索引和切片、数组的复制、维度修改、拼接、分割...)-1
Python学习笔记之NumPy模块——超详细(安装、数组创建、正态分布、索引和切片、数组的复制、维度修改、拼接、分割...)
|
7天前
|
Python
Python将目录分割成数组
Python将目录分割成数组
|
2月前
|
Python
【Leetcode刷题Python】416. 分割等和子集
LeetCode 416题 "分割等和子集" 的Python解决方案,使用动态规划算法判断是否可以将数组分割成两个元素和相等的子集。
17 1
|
2月前
|
Python
【Leetcode刷题Python】131. 分割回文串
LeetCode题目131的Python编程解决方案,题目要求将给定字符串分割成所有可能的子串,且每个子串都是回文串,并返回所有可能的分割方案。
16 2
|
3月前
【洛谷】P8707 [蓝桥杯 2020 省 AB1] 走方格
dp[1][j]=dp[i][1]=0 (因为每次只能向右或向下走,所以如果从(1,1)到第一行上所有的点的方案,只有水平向右走这一种。题目大意:现在有个人站在第 1 行第 1 列,要走到第 i 行第 j 列(每次只能向右或者向下走),如果行号和列号都是偶数,不能走入这一格中。因为不能走入行号和列号均为偶数的格子,所以当行号和列号均为偶数(也就是i%2==0&&j%2==0)时,dp[i][j]=0。因为我们已经考虑过了从(1,1)到第一行或者到第一列的情况,所以循环枚举时我们从(2,2)开始。
51 11
|
3月前
|
机器学习/深度学习 数据可视化 TensorFlow
使用Python实现深度学习模型:图像语义分割与对象检测
【7月更文挑战第15天】 使用Python实现深度学习模型:图像语义分割与对象检测
58 2
|
4月前
|
机器学习/深度学习 存储 监控
基于YOLOv8深度学习的无人机视角高精度太阳能电池板检测与分析系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标分割
基于YOLOv8深度学习的无人机视角高精度太阳能电池板检测与分析系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标分割
|
4月前
|
存储 API C语言
Python学习笔记之NumPy模块——超详细(安装、数组创建、正态分布、索引和切片、数组的复制、维度修改、拼接、分割...)-2
Python学习笔记之NumPy模块——超详细(安装、数组创建、正态分布、索引和切片、数组的复制、维度修改、拼接、分割...)
|
4月前
|
算法 计算机视觉 Python
openCV 3计算机视觉 Python语言实现 笔记 第4章 深度估计与分割
openCV 3计算机视觉 Python语言实现 笔记 第4章 深度估计与分割
下一篇
无影云桌面