DFS(深度优先搜索遍历求合格条件总数)--07--DFS--蓝桥杯方格填数
(左右、上下、对角都算相邻)一共有多少种可能的填数方案?
输出
#include <iostream>
#include <vector>
#include <stdio.h>
#include <queue>
#include <cmath>
using namespace std;
const int ROW = ;
const int COL = ; int my[] = {};
int sum = ;
int num = ; int dd8[][] = {{-,},{,},{,},{,-},{-,},{,},{-,-},{,-}};
int dd[][] = {{-,},{,},{,},{,-}};
vector<vector<int> >sig[];
vector<vector<int> >matrix(ROW,vector<int>(COL,-)); bool check(int i,int j,int number){
if(my[number] == )
return false;
for(int zz = ;zz < ;zz++){
int ii = i + dd8[zz][];
int jj = j + dd8[zz][];
if(ii < ||jj < ||ii >= ROW||jj >= COL)
continue;
if(ii == &&jj ==)
continue;
if(ii == ROW - &&jj == COL - )
continue;
if(abs(matrix[ii][jj] - number) == )
return false;
}
return true;
}
void rightload(){
sig[sum] = matrix;
}
int checkrightload(){
for(int k = ;k < sum;k++){
if(sig[k] == matrix)
return ;
}
return ;
}
void lock(int i,int j,int k){
num--;
my[k] = ;
matrix[i][j] = k;
}
void unlock(int i,int j,int k){
num++;
my[k] = ;
matrix[i][j] = -;
}
void dfs(int i,int j){
for(int zz = ;zz < ;zz++){
int ii = i + dd[zz][];
int jj = j + dd[zz][];
if(ii < ||jj < ||ii >= ROW||jj >= COL)
continue;
if(ii == &&jj ==)
continue;
if(ii == ROW - &&jj == COL - )
continue;
if(matrix[ii][jj] == -){
for(int k = ;k < ;k++){
if(check(ii,jj,k) == true){
lock(ii,jj,k);
if(num == ){
if(checkrightload() == ){
rightload();
sum++;
}
unlock(ii,jj,k);
return;
}
else
dfs(ii,jj);
unlock(ii,jj,k); }
}
}
}
}
int main(){
for(int i = ;i < ;i++){
lock(,,i);
dfs(,);
unlock(,,i);
}
cout << sum <<endl;
return ;
}
DFS(深度优先搜索遍历求合格条件总数)--07--DFS--蓝桥杯方格填数的更多相关文章
- DFS+BFS(广度优先搜索弥补深度优先搜索遍历漏洞求合格条件总数)--09--DFS+BFS--蓝桥杯剪邮票
题目描述 如下图, 有12张连在一起的12生肖的邮票.现在你要从中剪下5张来,要求必须是连着的.(仅仅连接一个角不算相连) 比如,下面两张图中,粉红色所示部分就是合格的剪取. 请你计算,一共有多少 ...
- 第七届 蓝桥杯 方格填数 dfs
如下的10个格子 填入0~9的数字.要求:连续的两个数字不能相邻. (左右.上下.对角都算相邻) 一共有多少种可能的填数方案? 请填写表示方案数目的整数. 注意:你提交的应该是一个整数,不要填写任何 ...
- 蓝桥杯 方格填数 DFS 全排列 next_permutation用法
如下的10个格子(参看[图1.jpg]) 填入0~9的数字.要求:连续的两个数字不能相邻.(左右.上下.对角都算相邻) 一共有多少种可能的填数方案? 请填写表示方案数目的整数.注意:你提交的应该是一个 ...
- 采用邻接矩阵表示图的深度优先搜索遍历(与深度优先搜索遍历连通图的递归算法仅仅是DFS的遍历方式变了)
//采用邻接矩阵表示图的深度优先搜索遍历(与深度优先搜索遍历连通图的递归算法仅仅是DFS的遍历方式变了) #include <iostream> using namespace std; ...
- DFS(深度优先搜索遍历有向图)-03-有向图-太平洋大西洋水流问题
给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度.“太平洋”处于大陆的左边界和上边界,而“大西洋”处于大陆的右边界和下边界. 规定水流只能按照上.下.左.右四个方向流动,且只能从高 ...
- 【算法导论】图的深度优先搜索遍历(DFS)
关于图的存储在上一篇文章中已经讲述,在这里不在赘述.下面我们介绍图的深度优先搜索遍历(DFS). 深度优先搜索遍历实在访问了顶点vi后,访问vi的一个邻接点vj:访问vj之后,又访问vj的一个邻接点, ...
- 回溯算法 DFS深度优先搜索 (递归与非递归实现)
回溯法是一种选优搜索法(试探法),被称为通用的解题方法,这种方法适用于解一些组合数相当大的问题.通过剪枝(约束+限界)可以大幅减少解决问题的计算量(搜索量). 基本思想 将n元问题P的状态空间E表示成 ...
- HDU 1241 Oil Deposits DFS(深度优先搜索) 和 BFS(广度优先搜索)
Oil Deposits Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- HDU 4707 Pet(DFS(深度优先搜索)+BFS(广度优先搜索))
Pet Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissio ...
随机推荐
- 如何在ubuntu14.04(64位)编译运行32位程序
sudo -i cd /etc/apt/sources.list.d echo "deb http://archive.ubuntu.com/ubuntu/ raring main rest ...
- AutoITx3.DLL所有函数及说明
AutoItSetOption 调整各种函数/参数的运作方式. BlockInput 屏蔽/启用鼠标与键盘(输入). CDTray 弹出或关闭光驱. ClipGet 获取剪贴板 ...
- WebGL 渲染管线
WebGL 是以 OpenGL ES 2.0 为基础的 3D 编程应用接口. WebGL依赖GPU的图形渲染能力,即依赖硬件设备,所以其渲染流程和GPU内部的渲染管线是相符的.渲染管线的作用是将3D模 ...
- Linux-使用之vim编译安装出现的问题
---恢复内容开始--- cd <directory> Short for "change directory". The shorthand name for the ...
- python的线性代数
估计线性模型中的系数:a=np.linalg.lstsq(x,b),有b=a*x 求方阵的逆矩阵np.linalg.inv(A) 求广义逆矩阵:np.linalg.pinv(A) 求矩阵的行列式:np ...
- 《算法技术手册》George T. Heineman(作者)epub+mobi+azw3
内容简介 开发健壮的软件需要高效的算法,然后程序员们往往直至问题发生之时,才会去求助于算法.<算法技术手册>讲解了许多现有的算法,可用于解决各种问题.通过阅读它,可以使您学会如何选择和实现 ...
- Windows Server 2008 R2 SP1 中IIS7.5 和 TOMCAT7 整合笔记
Windows Server 2008 R2 SP1 中IIS7.5 和 TOMCAT7 整合笔记 来源:www.roak.com 整合文件在百度网盘或博客盘 配置了N次,64位操作系统真坑爹~~~下 ...
- DICOM的Worklist服务
看 DICOM 标准有一段时间了,前面几篇也介绍了一下 DIMSE-C 消息服务,具体参看Dicom 学习笔记-Dicom 消息服务(DIMSE-C/DIMSE-N),本文就介绍一下 DICOM 标准 ...
- 谈一下你对uWSGI和 nginx的理解(原理)
要注意 WSGI / uwsgi / uWSGI 这三个概念的区分. WSGI是一种通信协议. uwsgi是一种线路协议而不是通信协议,在此常用于在uWSGI服务器与其他网络服务器的数据通信. uWS ...
- Ubuntu 移植 ffmpeg + x264
背景 直接编译移植的ffmpeg是与 arm-linux 下类似的. 详情参考: arm linux 移植 FFMPEG库 + x264 host平台 :Ubuntu 16.04 x264 :2017 ...