方格填数--蓝桥杯---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个格子 +--+--+--+ | | | |+--+--+--+--+| | | | |+--+--+--+--+| | | |+--+--+--+ (如果显示有问题,也可以参 ...
随机推荐
- Spring.Web.Mvc 注入(控制器属性注入)
1.web.config配置 <?xml version="1.0" encoding="utf-8"?><!-- 有关如何配置 ASP.NE ...
- storm源码分析之任务分配--task assignment
在"storm源码分析之topology提交过程"一文最后,submitTopologyWithOpts函数调用了mk-assignments函数.该函数的主要功能就是进行topo ...
- LibreOJ 6001 太空飞行计划(最大流)
题解:首先源点向每个实验建边,流量为经费的值,实验向器材建边,值为无限大,器材向终点建边,值为价值 然后跑一遍最大流就能跑出所谓的最大闭合图的点值之和. 代码如下: #include<queue ...
- Floyd-Warshall求图中任意两点的最短路径
原创 除了DFS和BFS求图中最短路径的方法,算法Floyd-Warshall也可以求图中任意两点的最短路径. 从图中任取两点A.B,A到B的最短路径无非只有两种情况: 1:A直接到B这条路径即是最短 ...
- [原创]Java中使用File类的list方法获取一定数量的文件:FilenameFilter接口的特殊用法
前言:有时候我们可能会遇到这样一个问题:需要遍历一个包含极多文件的文件夹,首先想到的肯定是使用File.list()方法,该方法返回一个String[],但是如果文件达到几亿呢?这个时候我们就需要分批 ...
- Markdown使用心得
1. 标题的使用 在使用标题时,如果为了层次清晰,可以在"#"后加上"1. "或者"1.1. "这种序号. 每一级标题的正文结束后,最好加一 ...
- WinForm中DataGridView的使用(六) - 特殊处理的小地方
列标题不能居中的解决方法 一般列标题的居中我们都使用this.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignmen ...
- 初学python - 零碎的知识点
* 标识符命名规则 数字,字母,下划线组成,数字不能开头区分大小写 * 注释 单行:#:多行:‘ ‘ ‘ ,“”“: * 进制标识 b:二进制 o:八进制 d:十进制x:十六进制 转换:format( ...
- Jmeter响应中文乱码解决办法
JMeter当响应页面没有设置编码时,默认会从jmeter.properties配置文件中sampleresult.default.encoding的配置进行设置,默认使用ISO8859-1,在配置文 ...
- Mysql导入数据时-data truncated for column..
在导入Mysql数据库时,发现怎么也导入不进去数据,报错: 查看表定义结构:可以看到comm 定义类型为double类型 原来是因为数据库文件中: 7369 smith clerk ...