方格填数(2016年蓝桥杯)

2023-11-11

如图,如下的10个格子,填入0~9的数字。要求:连续的两个数字不能相邻。
(左右、上下、对角都算相邻)一共有多少种可能的填数方案?
请填写表示方案数目的整数。


看到这题第一个想到的方法就是回溯,就很像八皇后,能填进去就填,填不进去就看下一个位置(我做的是0---9不重复使用)

我感觉这题麻烦就在判断上

1.首先要判断一个点的8个方向相减的绝对值是否为1,为1不能填入,不为1判断是否使用过这个数,没使用填入 进行下一个位置

2.如果填入的位置到达最后一列应该换行看下一行的第一个位置进行判断

3.填到最后每一个情况总sum++就行了


上代码

#include<iostream>
using namespace std;
int a[3][4];
int num = 0;
int v[10] = {0};
int pd(int k, int i, int j){//这个就是判断啦。。写的有点繁琐
	if (i-1>=0 && (a[i - 1][j] == k - 1 || a[i - 1][j] == k + 1) )
		return 0;
	if (j-1>=0 && (a[i][j - 1] == k + 1 || a[i][j - 1] == k - 1) )
		return 0;
	if (i-1>=0 && j-1>=0 && (a[i - 1][j - 1] == k + 1 || a[i - 1][j - 1] == k - 1))
		return 0;
	if (i-1>=0 && j+1<4 && (a[i - 1][j + 1] == k + 1 || a[i - 1][j + 1] == k - 1))
		return 0;
	if (j + 1 < 4 && (a[i][j + 1] == k + 1 || a[i][j + 1] == k - 1))
		return 0;
	if (i + 1 < 3 && (a[i + 1][j] == k + 1 || a[i + 1][j] == k - 1))
		return 0;
	if (i + 1 < 3 && j - 1 >= 0 && (a[i + 1][j - 1] == k + 1 || a[i + 1][j - 1] == k - 1))
		return 0;
	if (i + 1 < 3 && j + 1 < 4 && (a[i + 1][j + 1] == k + 1 || a[i + 1][j + 1] == k - 1))
		return 0;
	return 1;
}
void f(int i, int j){
	if (i == 2&&j==3){//已经填入到最后一个说明这种情况满足,num++
		num++;
		return;
	}
		for (int k = 0; k <= 9; k++){
			if (pd(k, i, j)&&v[k]==0) {//判断8个方向是否能填入,并且是否用过
				v[k] = 1;
				a[i][j] = k;
				if (j == 3)//到达最后一列记得换行
					f(i + 1, 0);
				else
					f(i, j + 1);
				a[i][j] = -9;
				v[k] = 0;
			}
		}
}
int main(){
	for (int i = 0; i < 3; i++)//这里我将所有数赋值-9,因为第一个和最后一个不需要赋值,避免干扰
		for (int j = 0; j < 4; j++)
			a[i][j] = -9;
	f(0, 1);
	printf("%d", num);
	return 0;
}


结果应该是:1580

理解了八皇后这个典型的回溯,这些都不太麻烦了



欢迎大家加入 早起学习群,一起学习一起进步!(群号:642179511

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

方格填数(2016年蓝桥杯) 的相关文章

  • 2022第十三届蓝桥杯国赛真题javaB组

    文章目录 试题A 重合次数 试题B 数数 试题C 左移右移 试题D 窗口 试题E 迷宫 试题F 小球称重 试题G 背包与魔法 试题H 修路 试题I 围栏 试题J 好数之和 试题A 重合次数 本题总分 5 分 问题描述 在同一天中 从上午6
  • 蓝桥杯备赛:贪心

    例题1 最少砝码 问题描述 你有一架天平 现在你要设计一套砝码 使得利用这些砝码可以称出任意 小于等于 NN 的正整数重量 那么这套砝码最少需要包含多少个砝码 注意砝码可以放在天平两边 输入格式 输入包含一个正整数 N 输出格式 输出一个整
  • 蓝桥杯 c/c++ 算法提高 最长滑雪道

    算法提高 最长滑雪道 资源限制 时间限制 1 0s 内存限制 256 0MB 问题描述 小袁非常喜欢滑雪 因为滑雪很刺激 为了获得速度 滑的区域必须向下倾斜 而且当你滑到坡底 你不得不再次走上坡或者等待升降机来载你 小袁想知道在某个区域中最
  • 蓝桥杯JAVA B组 2020(1)第五题 排序

    一 题目描述 小蓝最近学习了一些排序算法 其中冒泡排序让他印象深刻 在冒泡排序中 每次只能交换相邻的两个元素 小蓝发现 如果对一个字符串中的字符排序 只允许交换相邻的两个字符 则在所有可能的排序方案中 冒泡排序的总交换次数是最少的 例如 对
  • 蓝桥杯:基础练习 特殊回文数(java实现)

    问题描述 123321是一个非常特殊的数 它从左边读和从右边读是一样的 输入一个正整数n 编程求所有这样的五位和六位十进制数 满足各位数字之和等于n 输入格式 输入一行 包含一个正整数n 输出格式 按从小到大的顺序输出满足条件的整数 每个整
  • 蓝桥杯---貌似化学---逆矩阵

    试题 算法训练 貌似化学 资源限制 时间限制 1 0s 内存限制 256 0MB 问题描述 现在有a b c三种原料 如果他们按x y z混合 就能产生一种神奇的物品d 当然不一定只产生一份d 但a b c的最简比一定是x y z 现在给你
  • 蓝桥杯单片机组——程序框架及客观题

    文章目录 前言 程序框架 main 中断 两段式代码结构 单片机运行流程 代码风格 客观题 总结 目录 前言 前面两篇主要是介绍了蓝桥省赛的一些参赛技巧 此篇主要是分享程序框架和一些客观题的链接 程序框架 蓝桥的评分是综合了效果和代码步骤的
  • 2018年第九届蓝桥杯C/C++A组省赛 题面&部分题解

    首先 原题 链接 https pan baidu com s 1UzRN6Mf2Dwp0263F MMESg 密码 2ryh 第一题 标题 分数 1 1 1 2 1 4 1 8 1 16 每项是前一项的一半 如果一共有20项 求这个和是多少
  • 过河卒 蓝桥杯 755

    题目描述 如图 A 点有一个过河卒 需要走到目标 B 点 卒行走规则 可以向下 或者向右 同时在棋盘上的 C 点有一个对方的马 该马所在的点和所有跳跃一步可达的点称为对方马的控制点 例如上图 C 点上的马可以控制 99 个点 图中的 P1
  • 1093: 数1的个数

    存限制 128 MB 题目描述 给定一个十进制正整数n 1 n 10000 写下从1到n的所有整数 然后数一下其中出现的数字 1 的个数 例如当n 2时 写下1 2 这样只出现了1个 1 当n 12时 写下1 2 3 4 5 6 7 8 9
  • 蓝桥杯 成绩统计

    目录 问题描述 思路分析及代码实现 问题描述 小蓝给学生们组织了一场考试 卷面总分为 100 分 每个学生的得分都是一个 0 到 100 的整数 如果得分至少是 60 分 则称为及格 如果得分至少为 85 分 则称为优秀 请计算及格率和优秀
  • 算法基础/递归回溯

    1 17 电话号码的字母组合 题目描述 示例 示例 1 输入 digits 23 输出 ad ae af bd be bf cd ce cf 示例 2 输入 digits 输出 示例 3 输入 digits 2 输出 a b c 解答描述
  • 蓝桥杯模拟、思维

    本文是根据博主安然无虞的文章进行我的思维训练和练习 下面是我的练习代码和思路 1 换酒问题 include
  • 2023蓝桥杯python 组试题A:2023

    题目 请求出在 12345678 至 98765432 中 有多少个数中完全不包含 2023 完全不包含 2023 是指无论将这个数的哪些数位移除都不能得到 2023 例如 20322175 33220022 都完全不包含 2023 而 2
  • 蓝桥杯-稍大的字符串

    题目 标题 稍大的串 串可以按照字典序进行比较 例如 abcd 小于 abdc 如果给定一个串 打乱组成它的字母 重新排列 可以得到许多不同的串 在这些不同的串中 有一个串刚好给定的串稍微大一些 科学地说 它是大于已知串的所有串中最小的串
  • 【快速选择算法】O(n)时间复杂度

    快速选择的期望时间复杂度为O n 最坏时间复杂度为O n 2 当每次划分只划分为n 1个和1个时 由于划分时间复杂度为O n 最坏时间复杂度为O n 2 void quickselect vector
  • 多少个X 蓝桥杯模拟

    问题描述 给定一个字母矩阵 一个 X 图形由中心点和由中心点向四个45度斜线方向引出的直线段组成 四条 线段的长度相同 而且四条线段上的字母和中心点的字母相同 一个 X图形可以使用三个整数 r c L 来描述 其中 r c 表示中心点位于第
  • shared_ptr使用场景、陷阱、性能分析,使用建议

    1 std shared ptr使用场景 include
  • [蓝桥杯 2014 省 A] 波动数列

    题目链接 蓝桥杯 2014 省 A 波动数列 题目描述 观察这个数列 1 3 0 2
  • 如何查看崩溃日志

    目录 描述 思路 查看ipa包崩溃日志 简单查看手机崩溃信息几种方式 方式1 手机设置查看崩溃日志 方式2 Xocde工具 方式3 第三方软件克魔助手 环境配置 实时日志 奔溃日志分析 方式四 控制台资源库 线上崩溃日志 线上监听crash

随机推荐

  • Element UI 使用Tree组件设置节点勾选问题

    Element UI 使用Tree组件设置节点勾选问题 问题分析 1 设置 tree复选框 check strictly false 默认 父子关联 选中父级 勾选所有子选项 取消父级选中 同时取消子选项勾选 选中子选项 父选项变为半选中状
  • Java中的String的一些常用方法

    家人们好 目录 字符 字节与字符串 字符与字符串 获取指定位置的字符 字符串与字符数组的转换 给定字符串一个字符串 判断其是否全部由数字所组成 字节与字符串 实现字符串与字节数组的转换处理 字符串常见操作 字符串比较 不区分大小写比较 观察
  • 灯光 (1)平行光(Directional Light)

    1 平行光 Directional Light 定义一个光线方向向量而不是位置向量来模拟一个定向光 着色器的计算基本保持不变 但这次我们将直接使用光的direction向量而不是通过position来计算lightDir向量 struct
  • C++类中const修饰的函数与重载

    一 重载的定义 重载声明是指在同一个作用域内 可以声明几个功能类似的同名函数 但是这些同名函数的形式参数 指参数的个数 类型或者顺序 必须不同 返回值的类型不同 不能作为重载函数的判断依据 如下举例一组重载函数 void fun int a
  • FTL 入门

    最近的项目中用的是ftl文件而不是传统的jsp 于是上网查了一下 感觉这是个好东西 于是准备记录下来 以下摘自百度百科 1 概念 FreeMarker是一款模板引擎 即一种基于模板和要改变的数据 并用来生成输出文本 HTML网页 电子邮件
  • AttributeError: ‘function‘ object has no attribute ‘_name_‘

    在运行python的下面代码时 def log func def wrapper args kw print call s func name return func args kw return wrapper log def now p
  • layui table单元格事件修改值

    事件中的 this相当于document getElementById id 替代方法就是将原本 document getElementById id InnerHTML 填充代码 替换成 id html 填充代码
  • 数据结构_队列

    队列类似于日常生活中的排队 它也是一种特殊的线性表 队列和栈有相反的逻辑 但是却属于同类结构 文章目录 队列的介绍 队列的结构 队列的实现 完整代码及测试程序 循环队列 循环队列的介绍 循环队列的实现 完整代码 队列的介绍 定义 队列是一种
  • Truechain运用docker镜像搭建TrueChain测试私有环境

    https github com truechain wiki blob master task list task 20180917 md 安装docker Mac参考https blog csdn net jiang xinxing a
  • 图像边缘检测——一阶微分算子 Roberts、Sobel、Prewitt、Kirsch、Robinson(Matlab实现)

    图像边缘一般指图像的灰度变化率最大的位置 成因主要如下 1 图像灰度在表面法向变化不连续 2 图像中物体在空间上的深度不一致 3 在光滑的表面上颜色不一致 4 图像中物体的光影 边缘检测指的是从图像中检测边缘点和边缘段 并且描述边缘方向的过
  • 无重复字符的最长字串

    1 给定一个字符串 s 请你找出其中不含有重复字符的 最长子串的长度 代码展示 class Solution public int lengthOfLongestSubstring String s int n s length if n
  • PMAC网络USB设置

    一 连接到PMAC 在默认情况下 Power PMAC有一个IP地址为192 168 0 200 没有互联网连接 要安装所需的软件包并获得时间 您的PMAC将需要一个internet连接 为了建立你的网络连接 可以一个u盘上放一个文件夹 P
  • MYSQL数据库基本操作——DDL

    MYSQL DDL 何为DDL 对数据库的常用操作 对表结构的操作 创建表 表的其它操作 修改表结构 何为DDL DDL是数据定义语言 包括对数据库的常用操作 对表结构的常用操作 修改表结构三部分 通俗来讲 就是不包括对表内数据进行操作的所
  • 解救开发人员写文档的痛苦

    开发人员的痛苦 接手前人的项目 没有接口文档 只能看代码学习 接口文档用txt word markdown写 编写特别麻烦 写出来的文档也不美观 多层级的参数 子参数 写起来麻烦 不知道怎么表达更好 有的文档需要图文并茂 需要代码示例 需要
  • Shiro免密登录

    Shiro免密登录 代码构成 代码构成 1 创建枚举类LoginType 登录类型 public enum LoginType PASSWORD password 密码登录 NOPASSWD nopassword 免密登录 private
  • 计算机专业的浪漫情话,计算机专业表白情话 污到流水文章

    次日早起 江笑还没有到学校 就收到了顾言兮的一条短信 陈昊轩回来了 在餐厅遇到 依然众星捧月 江笑皱了一下眉 要不是这条短信 她竟然都差一点忘了还有陈昊轩这个人了 众星捧月 也能想象 陌家成了那样 陌雪是不可能在栓得住陈昊轩了 那其他对于陈
  • 游戏开发unity xlua框架知识系列:C#如何调用lua

    参看xlua框架的LuaDLL cs文件后 才知道其实lua仍然是用c写的源代码编译成不同平台的库 然后通过unity的DLLImport方法来使用的
  • 学习SQL注入基础板块---准备工作以及踩的坑

    准备 下载phpStudy 建议下载2018版本的 因为新版本让我这个菜渣折腾挺多天 下载sqli labs GitHub下载 之后将其放在安装好的phpstudy的WWW目录下 下载HackBar插件 GitHub下载2 1 3版本的 不
  • 四十岁以上的程序员都去干啥了?

    编译丨Linsa 在美国 工作者的年龄中位数是42岁 而Stack Overflow 2016年的程序员调查中 程序员的平均年龄是29 6岁 中位数为27岁 40岁以上的程序员只占总数的12 7 2016年Stack Overflow程序员
  • 方格填数(2016年蓝桥杯)

    如图 如下的10个格子 填入0 9的数字 要求 连续的两个数字不能相邻 左右 上下 对角都算相邻 一共有多少种可能的填数方案 请填写表示方案数目的整数 看到这题第一个想到的方法就是回溯 就很像八皇后 能填进去就填 填不进去就看下一个位置 我