七段码(建图+搜索+并查集)

2023-11-20

在这里插入图片描述

思路:
step1:邻接表建图,相邻为1,不相邻为0,题目就等价为在图中求连通子图的个数。
step2:深度搜索每条边,并存储下来。
step3:对选择的边用并查集保存下来,然后看father[i] == i的个数,等于1,表示连通,否则表示不连通。

易错点:
1:建图时别忘了[5][6] 和[2][3] 也是相邻的
2:dfs如果需要存储搜索的结果,用一个数组的0和1来保存就行
3:选子序列的dfs代码为:

	flag[i] = 1;
	dfs(i + 1);
	flag[i] = 0;
	dfs(i + 1); 
4:并查集的使用

在这里插入图片描述

#include <bits/stdc++.h>
using namespace std;

void creat();
void dfs(int i);
int find(int i); //查找并查集中的根 
int mp[8][8]; //图 
int flag[8]; //标志,1表示该灯亮 
int father[8];
int result = 0;


int main(){
	
//	//建图
	creat();
//	//深搜 
	dfs(1);
	cout << result << endl;
	return 0;
}
void creat(){
	for (int i = 1; i < 8; ++i){
		for (int j = 1; j < 8; ++j){
			mp[i][j] = 0;
		}
	}
	mp[1][2] = mp[1][6] = 1;
	mp[2][1] = mp[2][7] = mp[2][3] = 1;
	mp[3][4] = mp[3][7] = mp[3][2] = 1;
	mp[4][3] = mp[4][5] = 1;
	mp[5][4] = mp[5][7] = mp[5][6] = 1;
	mp[6][1] = mp[6][7] = mp[6][5] = 1;
	mp[7][2] = mp[7][3] = mp[7][5] = mp[7][6] = 1;
	
}
void dfs(int i){
	
	if (i == 8){
		for (int m = 1; m <= 7; ++m){   //初始值要注意,都是i,而不是0!!! 
			father[m] = m;
		}
		for (int i = 1; i <= 7; ++i){ //构造并查集 
			for (int j = 1; j <= 7; ++j){
				if (mp[i][j] && flag[i] && flag[j]){
					//两个集合的合并,操作的是根的下标!!!
					int x = find(i);
					int y = find(j);
					if (x != y) {
						father[x] = y;
					} 
				}
			}
		}
		int cnt = 0; //根的个数 
		for (int i = 1; i<= 7; ++i){
			if (flag[i] && father[i] == i) cnt++; //应该是father,而不是find()!!! 
		}
		if (cnt == 1) result++;
		return ;
	}
	
	flag[i] = 1;
	dfs(i + 1);
	flag[i] = 0;
	dfs(i + 1); //这一句不能少,这种情况为该灯熄灭的情况!!! 
}
int find(int i){
	if(father[i] == i) return i;
	return find(father[i]); 
}

//答案是80

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

七段码(建图+搜索+并查集) 的相关文章

  • 蓝桥杯第十一届青少年Python组省赛试题

    选择题答案 ADDCA s input if s 2 er or s 2 ly s s 2 elif s 3 ing s s 3 print s n int input cnt 0 for i in range 2 n s 0 for j
  • 蛇形方阵

    题目描述 给出一个不大于 9 的正整数 n 输出 n n 的蛇形方阵 从左上角填上 1 开始 顺时针方向依次填入数字 如同样例所示 注意每个数字有都会占用 3 个字符 前面使用空格补齐 输入 4 输出 1 2 3 4 12 13 14 5
  • 青蛙过河 蓝桥杯 2097

    问题描述 小青蛙住在一条河边 它想到河对岸的学校去学习 小青蛙打算经过河里 的石头跳到对岸 河里的石头排成了一条直线 小青蛙每次跳跃必须落在一块石头或者岸上 不过 每块石头有一个高度 每次小青蛙从一块石头起跳 这块石头的高度就 会下降 1
  • 蓝桥杯 题库 简单 每日十题 day2

    01 卡片 题目描述 本题为填空题 只需要算出结果后 在代码中使用输出语句将所填结果输出即可 小蓝有很多数字卡片 每张卡片上都是数字 0 到 9 小蓝准备用这些卡片来拼一些数 他想从 1 开始拼出正整数 每拼一个 就保存起来 卡片就不能用来
  • 蓝桥杯单片机组——程序框架及客观题

    文章目录 前言 程序框架 main 中断 两段式代码结构 单片机运行流程 代码风格 客观题 总结 目录 前言 前面两篇主要是介绍了蓝桥省赛的一些参赛技巧 此篇主要是分享程序框架和一些客观题的链接 程序框架 蓝桥的评分是综合了效果和代码步骤的
  • C语言实现顺序表

    线性表是数据结构中的逻辑结构 线性表采用顺序存储的方式存储就称之为顺序表 数组是顺序表在实际编程中的具体实现方式之一 本篇主要介绍顺序表 顺序表的创建 添加元素 删除元素 遍历输出等操作 1 创建顺序表 1 1定义顺序表结构体 结构体包含三
  • 对象的初始化和清理(构造和析构函数)

    对象的初始化和清理 1 1 构造函数 1 1 1 没有返回值 没有void 类名相同 可以发生重载 1 2 构析函数 1 2 1 没有返回值 没有void 函数名称 类名 不可以发生重载 不可以有参数 1 3 系统会默认调用 构造函数和析构
  • c1048: [编程入门]自定义函数之字符串拷贝

    题目描述 有一字符串 包含n个字符 写一函数 将此字符串中从第m个字符开始的全部字符复制成为另一个字符串 输入 数字n 一行字符串 数字m 输出 从m开始的子串 样例输入复制 6 abcdef 3 样例输出复制 cdef 思路 两种方法 一
  • 蓝桥杯.卡片(模拟)

    Question Result 3181 Solve 直接模拟暴力 初始化卡片数量为2021 去模拟拼数的过程 注意点的话 我是先去判断卡片还有没有 再去减一 所以输出结果也有一个减一 因为一旦说卡片没有了 就意味着当前这个数字拼不成了 C
  • 问题 D: 稀疏矩阵类型判断

    题目描述 输入一个稀疏矩阵 输出其类型 类型包括 上三角 对角线及其右上方的元素非0 其它元素为0 下三角 对角线及其左下方的元素非0 其它元素为0 对称 沿对角线对称的元素非0且相等 空矩阵 所有元素都为0 其它为普通矩阵 输入 输入包括
  • 蓝桥杯-2020年省赛-回文日期

    498 import datetime n input start datetime date int n 4 int n 4 6 int n 6 delta datetime timedelta days 1 flag 0 for i i
  • 蓝桥杯每日一题2023.9.16

    蓝桥杯2022年第十三届省赛真题 X进制减法 C语言网 dotcpp com 题目描述 进制规定了数字在数位上逢几进一 X 进制是一种很神奇的进制 因为其每一数位的进制并不固定 例如说某种 X 进制数 最低数位为二进制 第二数位为十进制 第
  • 蓝桥杯-稍大的字符串

    题目 标题 稍大的串 串可以按照字典序进行比较 例如 abcd 小于 abdc 如果给定一个串 打乱组成它的字母 重新排列 可以得到许多不同的串 在这些不同的串中 有一个串刚好给定的串稍微大一些 科学地说 它是大于已知串的所有串中最小的串
  • 七段码(建图+搜索+并查集)

    思路 step1 邻接表建图 相邻为1 不相邻为0 题目就等价为在图中求连通子图的个数 step2 深度搜索每条边 并存储下来 step3 对选择的边用并查集保存下来 然后看father i i的个数 等于1 表示连通 否则表示不连通 易错
  • 蓝桥杯 填字母游戏(博弈论)

    小明经常玩 LOL 游戏上瘾 一次他想挑战K大师 不料K大师说 我们先来玩个空格填字母的游戏 要是你不能赢我 就再别玩LOL了 K大师在纸上画了一行n个格子 要小明和他交替往其中填入字母 并且 1 轮到某人填的时候 只能在某个空格中填入L或
  • 蓝桥杯-快乐数-力扣

    202 快乐数 编写一个算法来判断一个数 n 是不是快乐数 快乐数 定义为 对于一个正整数 每一次将该数替换为它每个位置上的数字的平方和 然后重复这个过程直到这个数变为 1 也可能是 无限循环 但始终变不到 1 如果这个过程 结果为 1 那
  • 【快速选择算法】O(n)时间复杂度

    快速选择的期望时间复杂度为O n 最坏时间复杂度为O n 2 当每次划分只划分为n 1个和1个时 由于划分时间复杂度为O n 最坏时间复杂度为O n 2 void quickselect vector
  • 试题 B: 顺子日期

    问题描述 小明特别喜欢顺子 顺子指的就是连续的三个数字 123 456 等 顺子日 期指的就是在日期的 yyyymmdd 表示法中 存在任意连续的三位数是一个顺 子的日期 例如 20220123 就是一个顺子日期 因为它出现了一个顺子 12
  • [蓝桥杯 2014 省 A] 波动数列

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

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

随机推荐

  • 把思科端口速率改为不协商_端口汇聚—TRUNK技术介绍

    一 概述 随着网络技术的不断发展和应用 网络的速度越来越快 网络的应用也越来越复杂 因此在很多实际应用中网络速度就成为各种网络应用的瓶颈所在 通过升级来提高网络速度是解决问题的一个有效的手段 比如从10M以太网到100M以太网以至于1000
  • Tic-Tac-Toe(三子连)(总结规律)

    Time Limit 1000 mSec Memory Limit 262144 KB Problem Description Kim likes to play Tic Tac Toe Given a current state and
  • 基于灰度的模板匹配(带旋转角度)

    原图 选择模板 旋转180度进行识别 继续旋转 依然可以识别 代码 Searching the best matching of a template in an image with rotation dev close window r
  • STM32使用各传感器demo

    先挖个坑 待整理 语音播报部分 1 VS1053语音模块 2 JQ8400语音模块 智能小车部分 3 寻迹模块 4 避障模块 5 舵机驱动 6 超声波模块 7 L298N模块 8 蓝牙JD31模块 兼容HC 05 9 红外模块 10 MPU
  • 使用golang+antlr4构建一个自己的语言解析器(一)

    Antlr4 简介 ANTLR 全名 ANother Tool for Language Recognition 是基于LL 算法实现的语法解析器生成器 parser generator 用Java语言编写 使用自上而下 top down
  • 如何查看Tomcat版本信息

    一 简单暴力的 1 打开tomcat路径下的lib文件夹 找到catalina jar 用解压工具打开 找到 MANIFEST MF 打开就可以看到了 二 进入tomcat 安装路径 进入bin文件夹 对于version bat点击运行后会
  • STM32野火教程学习

    野火教程学习 全套200集视频教程和1000页PDF教程请到秉火论坛下载 www firebbs cn 野火视频教程优酷观看网址 http i youku com firege 第4章 初识STM32 零死角玩转STM32 F429系列 h
  • LaTeX 命令和代码结构简介

    目录 LaTeX LaTeX LATE X 命令和环境 命令 参数 环境 分组 LaTeX LaTeX
  • 【Linux应用】磁盘IO读写测试工具-FIO详解

    1 FIO简介 FIO是Linux下开源的一款IOPS测试工具 主要用来对磁盘进行压力测试和性能验证 它可以产生许多线程或进程来执行用户特定类型的I O操作 通过编写作业文件 类似于k8s的yaml 或者直接命令去执行测试动作 相当于是一个
  • linux 使用systemctl 启动服务报错: Error: No space left on device

    By default Linux only allocates 8192 watches for inotify which is ridiculously low And when it runs out the error is als
  • uni-app开发微信小程序数据 \n 换行符失效问题

    前言 使用uni app开发微信小程序时 使用text显示字符串 字符串带 n 需要在 n处直接换行 1 本地字符串 可以直接换行显示 2 后台返回字符串 直接换行失效 原因 渲染时 n 直接被当成字符串处理了 根本不识别 效果图 实现 1
  • pikachu靶场 RCE、File Inclusion

    目录 exec ping exec eval File Inclusion local File Inclusion remote exec ping 输入正常的ip地址看到正常回显 测试带管道符 能不能正常执行 发现可以 命令可以接各种命
  • C++中经常有set和get函数,那么他们有什么作用呢

    C 中经常有set和get函数 set和get函数的作用 由于成员变量我们一般设置为私有 在类外部不能直接访问 所以我们需要设计公有的set 函数和get 函数来访问它 set 函数是指修改私有成员变量的值的那类函数 get 函数是指输出
  • vue中用高德地图根据经纬度在地图上显示一个定位点

    在 Vue 中使用高德地图显示定位点 你需要做以下几件事 在项目中安装高德地图的 npm 包 npminstall save amap js api 在 main js 中引入高德地图的库并初始化 import AMapfrom amap
  • JSP——JavaBean的使用实例(求圆的面积)

    JSP页面通过表单输入圆半径并提交给该页面 表单提交后 JSP页面将计算圆面积和周长的任务交给一个JavaBean去完成 1 建立如下目录结构文件 2 Circle java 文件 package sun hebtu 求圆面积的Circle
  • JSP+ssm计算机毕业设计米哈游原神角色伤害计算系统xbn3e【源码、数据库、LW、部署】

    项目运行 项目含有源码 文档 程序 数据库 配套开发软件 软件安装教程 环境配置 Jdk1 8 Tomcat7 0 Mysql HBuilderX Webstorm也行 Eclispe IntelliJ IDEA Eclispe MyEcl
  • ROS2报错 AttributeError: type object ‘type‘ has no attribute ‘_TYPE_SUPPORT‘

    问题描述 今天在用python写ROS2编写发布者和订阅者 然后需要用到自己的写的接口 在写完之后 使用colcon build并没有报错 并且可以使用ros2 interface show my interface指令查看到自己定义的接口
  • 用 IDEA+EmmyLua 来写神途脚本

    1 安装IntelliJ IDEA 下载地址 Download IntelliJ IDEA The Capable Ergonomic Java IDE by JetBrains 推荐安装 2022 1 4 版本 可使用社区版 2 安装 l
  • QT二维码生成和解析&Demo

    目录 一 前言 二 相关知识 三 效果展示 四 主要源码简析 五 源码Demo 一 前言 本文主要介绍二维码生成和解析的相关知识和例程 二 相关知识 二维码生成 主要用到的是开源的二维码QR码编码库qrencode 需要使用到的库文件为下面
  • 七段码(建图+搜索+并查集)

    思路 step1 邻接表建图 相邻为1 不相邻为0 题目就等价为在图中求连通子图的个数 step2 深度搜索每条边 并存储下来 step3 对选择的边用并查集保存下来 然后看father i i的个数 等于1 表示连通 否则表示不连通 易错