[蓝桥杯2020] E题.七段码

发布时间:2021-10-23 06:57:10

题目描述:


小蓝要用七段码数码管来表示一种特殊的文字。
上图给出了七段码数码管的一个图示,数码管中一共有 7 段可以发光的二
极管,分别标记为 a, b, c, d, e, f, g。
小蓝要选择一部分二极管(至少要有一个)发光来表达字符。在设计字符
的表达时,要求所有发光的二极管是连成一片的。
例如:b 发光,其他二极管不发光可以用来表达一种字符。
例如:c 发光,其他二极管不发光可以用来表达一种字符。这种方案与上
一行的方案可以用来表示不同的字符,尽管看上去比较相似。
例如:a, b, c, d, e 发光,f, g 不发光可以用来表达一种字符。
例如:b, f 发光,其他二极管不发光则不能用来表达一种字符,因为发光
的二极管没有连成一片。
请问,小蓝可以用七段码数码管表达多少种不同的字符?


#include
using namespace std;
const int N=10;
int use[N],ans,e[N][N],fa[N];
void init(){
//连边建图
//a b c d e f g
//1 2 3 4 5 6 7
e[1][2]=e[1][6]=1;
e[2][1]=e[2][7]=e[2][3]=1;
e[3][2]=e[3][4]=e[3][7]=1;
e[4][3]=e[4][5]=1;
e[5][4]=e[5][6]=e[5][7]=1;
e[6][1]=e[6][5]=e[6][7]=1;
}
int find(int u){if(fa[u]==u)return u;fa[u]=find(fa[u]);return fa[u];}//并查集
void dfs(int d){
if(d>7){
/* 并查集判联通 */
for(int i=1;i<=7;i++)fa[i]=i;
for(int i=1;i<=7;i++)
for(int j=1;j<=7;j++)
if(e[i][j]&&use[i]&&use[j]){
int fx=find(i),fy=find(j);
if(fx!=fy){
fa[fx]=fy;
}
}
int k=0;
for(int i=1;i<=7;i++)if(use[i]&&fa[i]==i)k++;
if(k==1)ans++;
return;
}
use[d]=1;
dfs(d+1);
use[d]=0;
dfs(d+1);
}
int main(){
init();
dfs(1);
cout<}

这题自己写不出来,抄了人家的勉强搞出来。

相关文档

  • 《洧南居士传》的文言文原文及译文
  • 2017专八作文范文:大学里该禁止网络游戏吗
  • 有关同学小孩满月祝福语
  • ElasticSearch系列二:掌握ES索引和Mapping
  • 普通用户的EIP1559
  • 赞美国庆节的诗句欣赏
  • 2020年考研英语:代词翻译的强化技巧
  • 转让设备合同模板
  • 大学生个人评价的总结
  • 不能喝菊花茶的人有哪些
  • 温婉贤淑or泼辣刁蛮 测婚姻会让你变成什么样
  • 封盘是什么意思
  • 孕妇左侧睡胎动历害怎么回事如何应对宝宝的胎动减少
  • u盘和存储卡都是用什么芯片做成的
  • 请问好用的局域网通讯软件有哪些
  • 蓝鲫怎么用
  • 小学六年级暑假游玩日记范文
  • 一分为二作文
  • 单例模式在Unity中的应用
  • 木瓜皮的食用须知
  • 吃水果有对身体有益处 但肠胃不适者应避免吃这些水果
  • 手机怎么压缩照片到60k
  • 观察云的变化日记300字
  • 寒食节是清明节吗?寒食节和清明节的区别
  • 愉快的暑假作文100
  • 林黛玉的赏析
  • 任劳任怨的成语故事是什么
  • Hadoop-- 海量文件的分布式计算处理方案
  • 辞工原因怎么说合适
  • 计算机专业就业前景及就业方向怎样
  • 猜你喜欢

    电脑版