题目:七段码(蓝桥OJ 595)

问题描述:

解题思路:
        枚举每一种可能组合(可以使用二进制数表示,每一个二进制就是一种组合),在判断是否符合题目要求的每一个发光灯管相邻(使用并查集方法确定,当每一个发光管属于同一领导则符合题目要求)。

题解:

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

#define n 7
//abcdefg
//0123456
vector <int > edge[n] =//每一个灯管的相邻编号
{
    {1, 5}, //0的相邻编号
    {0, 2, 6},  //1
    {1, 3, 6},  //2
    {2, 4}, //3
    {3, 5, 6},  //4
    {0, 4, 6},  //5
    {1, 2, 4, 5},   //6
};

int f[n] ;
int Find (int x )//找到最高领导
{
    if(f[x] == x) return x;
    f[x] = Find(f[x]) ;//压缩路径,提高效率
    return f[x];
}

int check (int x)//检查该组合x是否符合,即每一个灯管都有同一个最高领导
{

    for (int i = 0 ; i  < n ; ++ i)//n为7,7个灯管
    {
        f[i] = i ;//初始老板为自己
    }

    for (int i = 0 ; i < n ; ++ i)//枚举所有编号灯管
    {
        if ((x >> i) & 1)//括号表示该组合x第i位上灯亮(即i编号灯管亮)
        {

            for(int j : edge[i])//枚举i灯管的相邻灯管
            {
                if((1 << j) &x)//括号表示该组合x的i灯管存在相邻的j灯管亮
                {
                    //使i编号与j编号的最高领导为同一个
                    int ti = Find (i), tj = Find (j) ;
                    f[ti] = tj ;
                }
            }
        }
    }

//自此完成该组合最高领导合并。即相邻的灯泡都有同一领导,如果所有灯泡都相邻,那将有相同领导
    int t = -1 ;
    for (int i = 0 ; i < n ; ++ i)
    {
        if ((1 << i) &x )//i灯管亮时
        {

            if (t == -1)
            {
                t = Find (i) ;//将i灯管的最高领导赋给t
            }
            else
            {
                if (t != Find (i)) return 0 ;//存在不同最高领导的灯管。即说明灯管不相邻,停止循环并返回0,表明该组合存在不相邻灯管
            }
        }
    }
    return 1 ;
}
int main ()
{
    int ans = 0 ;
    for (int i = 1 ; i < (1 << n) ; ++ i)//枚举所有可能的二进制数(1 << n表示2^n)
    {
        if (check (i) == 1)
        {
             ++ans ;
        }
    }

    printf ("%d", ans) ;

    return 0 ;
}

知识点:枚举子集,并查集

附:并查集模板:

        

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

const int N = 1e7 + 10;
int f[N];//f[i]表示i的最高领导 
int Find(int x)
{
    if(f[x] == x) return x ;//当老板为自己时即是最高领导 
    f[x] = Find(f[x]);//压缩路径。记录当时的最高领导,不需要每次都重复到执行相同次数** 
	return f[x]; 
}

void And(int x, int y)//合并xy,使其拥有共同领导 
{
	x = Find(x);//找到x的最高领导 
	y = Find(y);//找到y的最高领导 
	f[x] = y;//让原x的最高领导有一个领导,这样原xy就有一个共同最高领导 **
//	printf("%d%d%d",x ,f[x]); 
	
}

int main()
{
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); 
 
	int n, m;cin >> n >> m;
	
	for(int i = 1; i <= n; i++)
	{
		f[i] = i;//让一开始领导都是自己本身 
	}	
	while(m--)
	{
		int q, x, y;cin >> q >> x >> y;
			 
		if(q == 1){
			//输入一表示将xy合并
			And(x, y); 
	 
		}
		else{
			x = Find(x);
			y = Find(y);
	 
			if(x == y){				 
			 	cout//使用cout会存在缓存,不会立即输出,程序结束时才会输出 
			}
			else{
				puts("NO"); 
			}
		}
	}
	return 0;
} 

 

        说明:从1到100的数组,最多执行10此操作。输入1表示合并(x,y同一最高领导),输入1以外表示查询是否同一最高领导 。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/312040.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue2中关于elementUI的自定义上传

一、项目背景 在项目中采用了admin模板&#xff0c;和elementUI组件。需求为手动选择文件可多选上传并显示图片 效果图为 二、自定义上传中遇到的问题 http-request覆盖默认的上传行为&#xff0c;可以自定义上传的实现function—— 在文档中存在这样一个自定义上传&#…

代码随想录day25 回溯算法加强练习

216.组合总和III 题目 找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数&#xff0c;并且每种组合中不存在重复的数字。 说明&#xff1a; 所有数字都是正整数。解集不能包含重复的组合。 示例 1: 输入: k 3, n 7 输出: [[1,2,4]] 示例 2: 输入…

jmeter分布式服务搭建

目录 一、环境准备 二、 安装包下载 三 、安装jdk 四 、控制机安装 4.1 解压压缩包 4.2 修改 bin/jmeter.properties 4.3 修改 bin/system.properties 五、执行机安装 5.1 解压安装包 5.2 修改 bin/jmeter.properties 5.3 修改 bin/system.properties 5.4 启动执行机 …

便捷好用的iOS文件管理App

便捷好用的iOS文件管理App 摘要 本文介绍了一款功能强大、免费的iOS文件管理App——克魔助手。通过使用克魔助手&#xff0c;用户可以轻松管理手机存储空间&#xff0c;清理垃圾文件&#xff0c;整理文件&#xff0c;并进行文件传输和截图操作。本文将详细介绍克魔助手的各项…

linux部署apache服务部署静态网站

第一步&#xff1a;配置IP地址 第二步&#xff1a;创建挂载点 配置yum仓库 mkdir -p /media/cdrom 挂载 mount /dev/cdrom /media/cdrom 安装服务 安装yum源 启用httpd服务程序并将其加入到开机启动项中 建立网站数据保存目录&#xff0c;并创建首页文件 mkdir /home/wwwroo…

OpenHarmony4.0适配LVDS屏幕驱动

1.概述 手头有一块RK3568的开发板OK3568-C&#xff0c;但是还没有适配OpenHarmony&#xff0c;用的还是LVDS屏幕&#xff0c;但是官方和网上好像还没有OpenHarmony4.0的LVDS屏幕驱动的通用实现&#xff0c;所以决定尝试了一下适配该开发板&#xff0c;完成LVDS屏幕驱动的适配&…

yapi无法注册解决,使用yapi pro即可注册,接口文档生成,java,json

1.气屎我了&#xff0c;直接用yapi pro就可以用&#xff0c;害的我弄了半天 2.地址&#xff1a;https://yapi.pro/login 3.yapi pro比较卡顿。开启无痕模式轻松解决该问题&#xff08;手动狗头&#xff09;祝你开启新大陆 yapi pro yapi

京东年度数据报告-2023全年度笔记本十大热门品牌销量(销额)榜单

2023年度&#xff0c;在电脑办公市场整体销售下滑的环境下&#xff0c;笔记本市场的整体销售也不景气。 根据鲸参谋平台的数据显示&#xff0c;京东平台上笔记本的年度销量为650万&#xff0c;同比下滑约16%&#xff1b;销售额约为330亿&#xff0c;同比下滑约19%。同时&#…

Kotlin程序设计(三)高级用法

Kotlin程序设计高级篇 在学习了前面的内容之后&#xff0c;相信各位小伙伴应该对Kotlin这门语言有了一些全新的认识&#xff0c;我们已经了解了大部分的基本内容&#xff0c;从本章开始&#xff0c;就是对我们之前所学的基本内容的进一步提升。 泛型 在前面我们学习了最重要…

社交通证经济学:Web3时代的社交奖励系统

Web3时代的到来带来了区块链技术和去中心化的新范式&#xff0c;社交媒体也在这场变革中经历着深刻的改变。 社交通证经济学作为Web3时代社交媒体的创新实践&#xff0c;重新定义了用户在平台上的价值和奖励体系。本文将深入探讨Web3时代社交通证经济学的背景、工作原理以及对…

律师小程序,在线咨询,在线问答小程序修复头像

应用介绍 演示前端小程序&#xff1a; #小程序://问卜易学咨询/cVtT0ndctaecDKd 律师小程序是一种智能化的服务平台&#xff0c;提供了多种有益的功能。首先&#xff0c;它能够实现在线法律咨询&#xff0c;用户可以通过文字、语音或视频与律师实时沟通&#xff0c;获得专业意见…

个人事务备忘录管理微信小程序

介绍 UniApp是一款使用Vue.js开发所有前端应用的框架&#xff0c;能够同时在iOS、Android、H5、小程序等多个平台上运行&#xff1b;所以本系统可以是一个安卓app&#xff0c;也可以是微信小程序 系统包括以下功能&#xff1a; 备忘录 管理个人事务 记事本 事务分类 日记编写…

GO自研微服务框架-路由实现

路由实现 1.不用框架 不用框架的路由实现 package mainimport ("fmt""log""net/http" )func main() {http.HandleFunc("/hello", func(writer http.ResponseWriter, request *http.Request) {fmt.Fprintf(writer, "%s 欢迎来到…

白嫖啦,微软面向初学者的机器学习课程

网址&#xff1a; https://microsoft.github.io/ML-For-Beginners/#/ Microsoft 提供了一个名为 "Machine Learning for Beginners" 的课程&#xff0c;这是一个为期12周、包含26节课的课程&#xff0c;旨在帮助初学者了解机器学习的基本概念。这个课程由 Azure Clou…

全网最细RocketMQ源码二:Producer

入口 这里分析源码用的入口是&#xff1a; org.apache.rocketmq.example.quickstart package org.apache.rocketmq.example.quickstart;public class Producer {public static void main(String[] args) throws MQClientException, InterruptedException {/** Instantiate wi…

有效的回文

常用方法就是双指针。使用两个指针从字符串的两端向中间移动&#xff0c;同时比较对应位置的字符&#xff0c;直到两个指针相遇。由于题目忽略非字母和非数字的字符且忽略大小写&#xff0c;所以跳过那些字符&#xff0c;并将字母转换为小写&#xff08;或大写&#xff09;进行…

java基础day04 -- 命令行运行java文件

package com.exmaple;/*** 命令行参数*/ public class ArgsOfMain {public static void main(String[] args) {//增强for循环for(String arg : args){System.out.println(arg);}} }当我打开idea终端运行javac命令完成后&#xff08;需要配置java环境变量&#xff0c;注意idea使…

FineBI实战项目一(16):下订单总用户数分析开发

点击新建组件&#xff0c;创建下订单总用户数组件。 选择自定义图表&#xff0c;选择文本&#xff0c;拖拽要分析的字段到文本中。 修改指针值名称。 将指针值名称修改为用户数。 进入仪表板&#xff0c;拖拽刚刚的组件进入仪表板&#xff0c;然后在再编辑标题。 效果如下&…

【排序】归并排序(C语言实现)

文章目录 1. 递归版的归并排序1.1 归并排序的思想2. 递归版的归并排序的实现 2. 非递归版的归并排序 1. 递归版的归并排序 1.1 归并排序的思想 归并排序&#xff08;MERGE - SORT&#xff09;是建立在归并操作上的一种有效的排序算法, 该算法是采用分治法&#xff08;Divide a…

快速了解VR全景拍摄技术运用在旅游景区的优势

豆腐脑加了糖、烤红薯加了勺&#xff0c;就连索菲亚大教堂前都有了“人造月亮”&#xff0c;在这个冬季&#xff0c;“尔滨”把各地游客宠上了天。面对更多的游客无法实地游玩&#xff0c;哈尔滨冰雪世界再添新玩法&#xff0c;借助VR全景拍摄技术对冬季经典冰雪体验项目进行全…