方格填数--蓝桥杯---dfs
一,第六届蓝桥杯C语言初赛

答案:1580
相似题目:N皇后问题
注意要枚举的是什么
#include<iostream>
#include<string.h>
using namespace std;
int a[][],vis[],dir[][]={{,-},{-,-},{-,},{-,}};
int cnt=;
int check(int x,int y,int num)
{
for(int i=;i<;i++)
{
int tx,ty;
tx=x+dir[i][];
ty=y+dir[i][];
if(tx>=&&tx<&&ty>=&&ty<)
{
if(a[tx][ty]==num-||a[tx][ty]==num+)//不相邻
return ;
}
}
return ;
} void dfs(int x,int y)
{
if(x==&&y==)
{
cnt++;
return;
}
if(y>)//当前行搜索完
dfs(x+,);
else
{
for(int i=;i<;i++)
{ if(check(x,y,i)&&!vis[i])//在棋盘上并且没有相邻/这个数字没有用过
{
a[x][y]=i;
vis[i]=;
dfs(x,y+);
a[x][y]=;//回溯
vis[i]=;
}
}
}
}
int main()
{
memset(vis,,sizeof(vis));
for(int i=;i<;i++)
{
for(int j=;j<;j++)
{
a[i][j]=;
}
}
dfs(,);
cout<<cnt<<endl;
return ;
}
二、第六届C语言蓝桥杯决赛

答案:42
题解一:模拟+暴力
//答案:42
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
int main()
{
int a[],mp[][];
mp[][]=mp[][]=;//处理边界
for(int i=;i<;i++)
mp[][i]=;
for(int i=;i<;i++)
a[i]=i+;
int ans=;
do
{
if(a[]<a[]&&a[]<a[]&&a[]<a[]&&a[]<a[])
{
if(a[]<a[]&&a[]<a[]&&a[]<a[]&&a[]<a[])
{
if(a[]<a[]&&a[]<a[]&&a[]<a[]&&a[]<a[]&&a[]<a[])
ans++;
}
}
}while(next_permutation(a,a+));
cout<<ans<<endl;
//system("pause");
return ;
}
题解二:DFS(过程同上题)
#include<iostream>
#include<string>
#include<string.h>
using namespace std;
int a[][], vis[];
int cnt = ;
int check(int x, int y)
{
if(x==&&y==)//注意边界
return ;
else if(x==&&y==&&a[][]>a[][])
return ;
else if(x==&&a[x][y-]<a[x][y])
return ;
else if(x==&&a[x][y-]<a[x][y]&&a[x-][y]<a[x][y])
return ;
else
{
return ;
} } void dfs(int x, int y)
{
if (x == )//棋盘放满
{
cnt++;
return;
}
if (y > )//当前行搜索完
dfs(x + , );
else
{
for (int i = ; i <= ; i++)
{ if (vis[i]==)//这个数字没有用过,并且符合条件
{
a[x][y] = i;
vis[i] = ;
if(check(x,y))
dfs(x, y + );
vis[i] = ;//回溯
}
}
}
}
int main()
{
memset(vis, , sizeof(vis));
dfs(, );
cout << cnt << endl;
system("pause");
return ;
}
方格填数--蓝桥杯---dfs的更多相关文章
- 蓝桥杯比赛javaB组练习《方格填数》
方格填数 如下的10个格子 +--+--+--+ | | | |+--+--+--+--+| | | | |+--+--+--+--+| | | |+--+--+--+ ( ...
- DFS(深度优先搜索遍历求合格条件总数)--07--DFS--蓝桥杯方格填数
此题方法多种,我用规范的DFS来求解 题目:方格填数 如下的10个格子,填入0~9的数字.要求:连续的两个数字不能相邻. (左右.上下.对角都算相邻)一共有多少种可能的填数方案? 输出 请填写表示 ...
- java实现第七届蓝桥杯方格填数
方格填数 题目描述 如下的10个格子 +--+--+--+ | | | | +--+--+--+--+ | | | | | +--+--+--+--+ | | | | +--+--+--+ (如果显示 ...
- java算法 蓝桥杯(题+答案) 方格填数
6.方格填数 (结果填空) 如下的10个格子 (如果显示有问题,也可以参看[图1.jpg]) 填入0~9的数字.要求:连续的两个数字不能相邻.(左右.上下.对角都算相邻) 一共有多少种可能的填数方案 ...
- java算法 第七届 蓝桥杯B组(题+答案) 6.方格填数
6.方格填数 (结果填空) 如下的10个格子 (如果显示有问题,也可以参看[图1.jpg]) 填入0~9的数字.要求:连续的两个数字不能相邻.(左右.上下.对角都算相邻) 一共有多少种可能的填数方案 ...
- 第七届蓝桥杯试题c/c++A组方格填数 回溯法
方格填数如下的10个格子 +--+--+--+ | | | |+--+--+--+--+| | | | |+--+--+--+--+| | | |+--+--+--+(如果 ...
- 第七届蓝桥杯javaB组真题解析-方格填数(第六题)
题目 /* 方格填数 如下的10个格子 +--+--+--+ | | | | +--+--+--+--+ | | | | | +--+--+--+--+ | | | | +--+--+--+ (如果显 ...
- 第七届蓝桥杯JavaB组——第6题方格填数
解决方案:利用全排列和递归 使用Java中的集合API:HashMap ArrayList package com.lzp.lanqiaoseven.p6; import java.util.*; / ...
- c++_方格填数(最新方法)
方格填数 如下的10个格子 +--+--+--+ | | | |+--+--+--+--+| | | | |+--+--+--+--+| | | |+--+--+--+ (如果显示有问题,也可以参 ...
随机推荐
- 使用 Sentry集中处理错误
Sentry的简介 Sentry 是一个实时的事件日志和聚合平台,基于 Django 构建. Sentry 可以帮助你将程序的所有 exception 自动记录下来,处理 exception 是每个程 ...
- Python基础-4
目录 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 1.列表生成式,迭代器&生成器 看列表[0, 1, 2, 3, 4, 5, 6, 7, ...
- const限定符、constexpr和常量表达式------c++ primer
编译器将在编译过程中把用到const变量的地方都替换成对应的值,为了执行这种替换,编译器必须知道变量的初始值.如果程序包含多个文件,则那个用了const对象的文件都必须能访问到它的初始值才行.要做到这 ...
- could not read data from '/Users/lelight/Desktop/ViewControllerLife/ViewControllerLife/Info.plist': The file “Info.plist” couldn’t be opened because there is no such file.
1.Info.plist放置至新文件夹下,路径被修改了,报错. could not read data from '/Users/lelight/Desktop/ViewControllerLife/ ...
- StackOverflow: 你没见过的七个最好的Java答案
StackOverflow发展到目前,已经成为了全球开发者的金矿.它能够帮助我们找到在各个领域遇到的问题的最有用的解决方案,同时我们也会从中学习到很多新的东西.这篇文章是在我们审阅了StackOver ...
- spring 学习(二):spring bean 管理--配置文件和注解混合使用
spring 学习(二)spring bean 管理--配置文件和注解混合使用 相似的,创建 maven 工程,配置pom.xml 文件,具体可以参考上一篇博文: sprint 学习(一) 然后我们在 ...
- Django权限控制进阶
一.一级菜单的排序 我们用字典存放菜单信息,而字典是无序的,当一级菜单过多时可能会出现乱序情况,因此需要给一级菜单排序 1.给一级菜单表的model中加一个weight权重的字段 ,权重越大越靠前 w ...
- 用Hadoop,还是不用Hadoop?
本文由 伯乐在线 - Lex Lian 翻译.英文出处:Anand Krishnaswamy.欢迎加入翻译小组. Hadoop通常被认定是能够帮助你解决所有问题的唯一方案. 当人们提到“大数据”或是“ ...
- UX | 最小可行性技能
简评:本文介绍了最小 UX 需要技能(可以看成设计版 MVP),包括用不同视角看事情,从回馈中学习等等 ~ 呐,可能刚入门设计的时候,会让一堆工具弄得眼花缭乱.其实呢,并不一定要每样都会使用,举一反三 ...
- Ubuntu16.04搭建各种开发环境的IDE: QT5 , CodeBlocks ,eclipse-cdt, PyCharm
搭建Ubuntu下C/C++以及Python的集成开发环境,采用双系统(Win7+Ubuntu)的Ubuntu16.04-LTS系统, 关于双系统的搭建可以参考下面博客(图文十分详细):https:/ ...