方格分割 (dfs+思维)
1.题目描述:
6x6的方格,沿着格子的边线剪开成两部分。 要求这两部分的形状完全相同。
试计算: 包括这 3种分法在内,一共有多少种不同的分割方法。 注意:旋转对称的属于同一种分割法。
如下是一种分割方式:
2.思路分析:
显然这道题是一个搜索问题,问题是我们如何来搜索?我们发现他是一个 6*6 的一个表格,并且他分割下来的两部分彼此相互对称,那我们就可以将每次搜索的点以及它的对称点都进行标记,!!注意 :很多人可能会犯一种错误,就是我那(3,3)这个格子去遍历了,但我们发现并不是这样,因为你无论找那个格子都不会让整个图中心对称,他实际对称的点是(3,3)这个点;
解决了这个问题我们来看一下怎样控制结束条件,不知道有没有小伙伴跟我一样,不就是控制结束条件吗?每次不都在对角点上结束吗?然后........
我们来看一下每种情况,看完你就会明白为什么不是这样。
这里蓝黄所走的线是其中的两种情况(画的有点丑别介意),显然只要我的x,y 任意一个走到边界都是一种情况。
至此所有的问题都已经解决,剩下的就是板子了。 (据说给别人点赞自己也会迎来好运哦)
3.代码如下:
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int book[7][7];
int sum=0;
int to[4][2]={{1,0},{0,1},{-1,0},{0,-1}};
void dfs(int x,int y)
{if(x==0||y==0||x==6||y==6){sum++;return;}for(int i=0;i<4;i++){int tx=x+to[i][0],ty=y+to[i][1];if(tx<0||ty<0||tx>6||ty>6||book[tx][ty]==1)continue;book[tx][ty]=1;book[6-tx][6-ty]=1;dfs(tx,ty);book[tx][ty]=0;book[6-tx][6-ty]=0;}
}
int main()
{book[3][3]=1;dfs(3,3);cout<<sum/4;return 0;
}
方格分割 (dfs+思维)相关推荐
- [蓝桥杯2017初赛]方格分割-dfs+思维
解题思路: 这是大佬的思路: 这道题可能上来会想到搜格子,但搜格子意味着更高的复杂度以及判连通的需要,本题似乎搜索要切开的边更优.由题意,这一条切割线必定经过图的中心点,那么我们一旦确定了半条到达边界 ...
- dfs记忆化搜索(带限制的选择问题) 讲解:LeetCode打家劫舍||| / 蓝桥 地宫取宝/蓝桥 k进制数//剪格子//方格分割
记忆化递归的必要性: 普通的递归可能会重复求解某一值,类似斐波那契数列.同样的子问题可能会被求解多次,这样就会很慢很慢很慢 解决方法:我们把历史求解(子问题)记录下来,如果下次需要求解子问题,那么直接 ...
- 2017蓝桥杯C++A:方格分割(DFS)
四.题目:方格分割 6x6的方格,沿着格子的边线剪开成两部分. 要求这两部分的形状完全相同. 如图:p1.png, p2.png, p3.png 就是可行的分割法. 试计算: 包括这3种分法在内,一共 ...
- 方格分割 蓝桥杯心得
标题:方格分割 6x6的方格,沿着格子的边线剪开成两部分. 要求这两部分的形状完全相同. 如图:p1.png, p2.png, p3.png 就是可行的分割法. 试计算: 包括这3种分法在内,一共有多 ...
- 第八届蓝桥杯第四题方格分割
题目如下: 标题:方格分割 6x6的方格,沿着格子的边线剪开成两部分. 要求这两部分的形状完全相同. 如图:p1.png, p2.png, p3.png 就是可行的分割法. 试计算: 包括这3种分法在 ...
- 迷宫,方格分割(python)
文章目录 迷宫 分析 代码(return 递归函数) 通过截图 代码(不return递归函数:定义全局变量) 通过截图(能得到正确答案) 手算 方格分割 分析 代码 通过截图 迷宫 X 星球的一处迷宫 ...
- 第八届蓝桥杯-第四题方格分割
标题:方格分割 6x6的方格,沿着格子的边线剪开成两部分. 要求这两部分的形状完全相同. 如图:p1.png, p2.png, p3.png 就是可行的分割法. 试计算: 包括这3种分法在内,一共 ...
- 蓝桥杯第八届省赛JAVA真题----方格分割
标题:方格分割 6x6的方格,沿着格子的边线剪开成两部分. 要求这两部分的形状完全相同. 如图:p1.png, p2.png, p3.png 就是可行的分割法. 试计算: 包括这3种分法在内,一共有多 ...
- Java实现第八届蓝桥杯方格分割
方格分割 题目描述 6x6的方格,沿着格子的边线剪开成两部分. 要求这两部分的形状完全相同. 如图:p1.png, p2.png, p3.png 就是可行的分割法. 试计算: 包括这3种分法在内,一共 ...
- 25行代码AC_ 2017年C/C++ A组第四题 方格分割(dfs剪痕+解题报告)
励志用少的代码做高效表达 问题描述: 6x6的方格,沿着格子的边线剪开成两部分. 要求这两部分的形状完全相同. 如图:p1.png, p2.png, p3.png 就是可行的分割法. 试计算: ...
最新文章
- python 二维list取列
- tensorflow随笔-读取图像文件数据(1)
- struts+hibernate+oracle+easyui实现lazyout组件的简单案例——OpSessionview实现
- JavaScript正在完善—解释
- 华为麦芒8首发开箱图赏:年轻潮流美学就看它
- PUSHA/POPA
- C++相对路径下新建文件夹
- Java中创建子类实例时会创建父类实例?
- 单片机歌曲代码大全_对于 51 单片机的四大误区!
- 非家用的监控摄像头都无复位功能
- 高洛峰细说php百度贴吧_高洛峰细说PHP视频教程推荐
- Linux版phpstudy搭建
- Python数据挖掘学习6卡方检验
- 一、科里奥利质量流量计
- python 使用cv2、io.BytesIO处理图片二进制数据
- Hadoop数据本地化
- 快递企业如何完成运单订阅消息的推送
- 删除姓名、年龄重复的记录——数据库
- 上海交通大学计算机学院导师介绍,上海交通大学计算机科学与工程系导师教师师资介绍简介-张同珍副教授...
- 查看Linux系统版本的命令总结
热门文章
- 帆软公式如何用数据库字段_高考数学必背100招:如何用构造法求数列通项公式?...
- 介数中心度与紧密中心度_将开发团队与技术紧密结合的6种方法
- SLAM【十】回环检测
- Java项目:医疗管理系统 (java+Springboot+Maven+Mybatis-plus+Vue+Mysql)
- 华为HCNA网络技术学习指南-读书笔记
- 开发系统所需的服务器,开发软件的服务器需要什么配置
- (转)sql server 排序规则
- Win10 关机显示程序没有响应
- MySQL_查询连续打卡天数
- python tkinter怎么读_Python初学 Tkinter