此题方法多种,我用规范的DFS来求解
题目:方格填数
如下的10个格子,填入0~9的数字。要求:连续的两个数字不能相邻。 
(左右、上下、对角都算相邻)一共有多少种可能的填数方案? 
 

输出

请填写表示方案数目的整数。 
 #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--蓝桥杯方格填数的更多相关文章

  1. DFS+BFS(广度优先搜索弥补深度优先搜索遍历漏洞求合格条件总数)--09--DFS+BFS--蓝桥杯剪邮票

    题目描述 如下图, 有12张连在一起的12生肖的邮票.现在你要从中剪下5张来,要求必须是连着的.(仅仅连接一个角不算相连)  比如,下面两张图中,粉红色所示部分就是合格的剪取.  请你计算,一共有多少 ...

  2. 第七届 蓝桥杯 方格填数 dfs

    如下的10个格子  填入0~9的数字.要求:连续的两个数字不能相邻. (左右.上下.对角都算相邻) 一共有多少种可能的填数方案? 请填写表示方案数目的整数. 注意:你提交的应该是一个整数,不要填写任何 ...

  3. 蓝桥杯 方格填数 DFS 全排列 next_permutation用法

    如下的10个格子(参看[图1.jpg]) 填入0~9的数字.要求:连续的两个数字不能相邻.(左右.上下.对角都算相邻) 一共有多少种可能的填数方案? 请填写表示方案数目的整数.注意:你提交的应该是一个 ...

  4. 采用邻接矩阵表示图的深度优先搜索遍历(与深度优先搜索遍历连通图的递归算法仅仅是DFS的遍历方式变了)

    //采用邻接矩阵表示图的深度优先搜索遍历(与深度优先搜索遍历连通图的递归算法仅仅是DFS的遍历方式变了) #include <iostream> using namespace std; ...

  5. DFS(深度优先搜索遍历有向图)-03-有向图-太平洋大西洋水流问题

    给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度.“太平洋”处于大陆的左边界和上边界,而“大西洋”处于大陆的右边界和下边界. 规定水流只能按照上.下.左.右四个方向流动,且只能从高 ...

  6. 【算法导论】图的深度优先搜索遍历(DFS)

    关于图的存储在上一篇文章中已经讲述,在这里不在赘述.下面我们介绍图的深度优先搜索遍历(DFS). 深度优先搜索遍历实在访问了顶点vi后,访问vi的一个邻接点vj:访问vj之后,又访问vj的一个邻接点, ...

  7. 回溯算法 DFS深度优先搜索 (递归与非递归实现)

    回溯法是一种选优搜索法(试探法),被称为通用的解题方法,这种方法适用于解一些组合数相当大的问题.通过剪枝(约束+限界)可以大幅减少解决问题的计算量(搜索量). 基本思想 将n元问题P的状态空间E表示成 ...

  8. HDU 1241 Oil Deposits DFS(深度优先搜索) 和 BFS(广度优先搜索)

    Oil Deposits Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...

  9. HDU 4707 Pet(DFS(深度优先搜索)+BFS(广度优先搜索))

    Pet Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissio ...

随机推荐

  1. 「NOIP2009」Hankson的趣味题

    题目描述 (由于本题是数论题,所以我只把题目大意说一下...) 输入时给定\(a_0,a_1,b_0,b_1\),题目要求你求出满足如下条件的\(x\)的个数: \[\begin{cases}\gcd ...

  2. unique 验证 criteria 使用

    model array('code', 'unique', 'criteria' =>array('condition' =>'schoolid=:schoolid','params' = ...

  3. 1. 使用 Docker 安装 Kong

    Create a Docker network $ docker network create kong-net Start Database $ docker run -d --name kong- ...

  4. 标准模板库中的链表(list)

    //C++数据结构与算法(第4版) Adam Drozdek 著  徐丹  吴伟敏<<清华大学出版社>> 头文件:include<list> list() 创建一个 ...

  5. 分享Burp Suite遇到的各种坑

    1.性质问题 价格昂贵 专业版高达399美元/每年,免费版有功能限制:https://portswigger.net/buy/pro,构想中的工具应该是免费开源的. 破解版存在安全隐患 https:/ ...

  6. pug

    https://github.com/pugjs/pug pug模板使用https://www.cnblogs.com/gudi/p/8080736.html

  7. 40和为S的两个数字

    题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 输出描述: 对应每个测试案例,输出两个数,小的先输出. 思路 ...

  8. Python爬虫连载5-Proxy、Cookie解析

    一.ProxyHandler处理(代理服务器) 1.使用代理IP,是爬虫的常用手段 2.获取代理服务器的地址: www.xicidaili.com www.goubanjia.com 3.代理用来隐藏 ...

  9. 想要转战CSDN了!!

    CSDN博客地址: https://blog.csdn.net/weixin_41559364

  10. (十)微信小程序---上传图片chooseImage

    官方文档 示例一 wxml <view bindtap="uploadImage">请上传图片</view> <image wx:for=" ...