题目:

小蓝要用七段码数码管来表示一种特殊的文字。

上图给出了七段码数码管的一个图示,数码管中一共有 7 段可以发光的二 极管,分别标记为 a, b, c, d, e, f, g。

小蓝要选择一部分二极管(至少要有一个)发光来表达字符。在设计字符 的表达时,要求所有发光的二极管是连成一片的。

例如:bb 发光,其他二极管不发光可以用来表达一种字符。

例如 cc 发光,其他二极管不发光可以用来表达一种字符。这种方案与上 一行的方案可以用来表示不同的字符,尽管看上去比较相似。

例如:a, b, c, d, ea,b,c,d,e 发光,f, gf,g 不发光可以用来表达一种字符。

例如:b, fb,f 发光,其他二极管不发光则不能用来表达一种字符,因为发光 的二极管没有连成一片。

请问,小蓝可以用七段码数码管表达多少种不同的字符?

分析:题目有两个要求:一是要求至少一个管有亮光,二是亮光的管必须要连成一片。

解:要求一,我们采用递归,列出所有可能的发光情况。

void dfs(int d){use[d]=1;//打开d这个灯,继续开关下一个灯dfs(d+1);use[d]=0;//关闭d这个灯,继续开关下一个灯dfs(d+1);
}

等到八个灯管都处理完之后,就要判断要求二,发光的管是否是连成一片的。

int find(int x){      //并查集if(p[x] != x) p[x] = find(p[x]);return p[x];
}void dfs(int d){if(d==8){for(int i=1;i<=7;i++)      //初始化p[i]=i;for(int i=1;i<=7;i++)for(int j=1;j<=7;j++)  if(e[i][j]&&use[i]&&use[j])p[find(i)]=find(j);        //用并查集把相邻的亮边存放到一个P集合里,根节点为第一个边的序号int k=0;for(int i=1;i<=7;i++)if(use[i] && p[i]==i)k++;if(k==1)     //所有亮边都在同一个集合中ans++;return;}use[d]=1;      //打开d这个灯,继续开关下一个灯dfs(d+1);use[d]=0;      //关闭d这个灯,继续开关下一个灯dfs(d+1);
}

完整代码:

#include<stdio.h>int ans;
int e[10][10],p[10],use[10];void init()           //连边建图
{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 x){      //并查集if(p[x] != x) p[x] = find(p[x]);return p[x];
}void dfs(int d){if(d==8){for(int i=1;i<=7;i++)      //初始化p[i]=i;for(int i=1;i<=7;i++)for(int j=1;j<=7;j++)  if(e[i][j]&&use[i]&&use[j])p[find(i)]=find(j);        //用并查集把相邻的亮边存放到一个P集合里,根节点为第一个边的序号int k=0;for(int i=1;i<=7;i++)if(use[i] && p[i]==i)k++;if(k==1)     //所有亮边都在同一个集合中ans++;return;}use[d]=1;      //打开d这个灯,继续开关下一个灯dfs(d+1);use[d]=0;      //关闭d这个灯,继续开关下一个灯dfs(d+1);
}int main()
{init();dfs(1);printf("%d",ans);
}

答案:80

蓝桥杯:七段码(C语言)相关推荐

  1. 蓝桥杯c语言校内选拔赛试题,2013年蓝桥杯校内选拔赛C语言B组.docx

    2013年蓝桥杯校内选拔赛C语言B组.docx 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水 ...

  2. 2015年第七届蓝桥杯省赛C语言B组

    2015年第七届蓝桥杯省赛C语言B组 题目来源:蓝桥杯 作者:GGG166 第一题: 题目:奖券数目 有些人很迷信数字,比如带"4"的数字,认为和"死"谐音,就 ...

  3. 2012年第三届蓝桥杯省赛C语言B组

    2012年第三届蓝桥杯省赛C语言B组 题目来源:蓝桥杯 作者:GGG166 第一题 题目:微生物增殖 假设有两种微生物 X 和 Y X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次( ...

  4. 蓝桥杯2016年C语言B组-交换瓶子

    蓝桥杯2016年C语言B组 交换瓶子 代码 交换瓶子 有N个瓶子,编号 1 ~ N,放在架子上. 比如有5个瓶子: 2 1 3 5 4 要求每次拿起2个瓶子,交换它们的位置. 经过若干次后,使得瓶子的 ...

  5. 蓝桥杯第十届c语言试题答案,蓝桥杯试题答案(C语言)蓝桥杯试题答案(C语言).pdf...

    蓝桥杯试题答案(C语言)蓝桥杯试题答案(C语言) 1.亲密数:假设有a.b两个数,若a的所有因子之和等于b,b的所有因子之和等于a,并 且a不等于b,则称a和b是一对亲密数.如284和220就是一对亲 ...

  6. 蓝桥杯软件类Java语言IDE(Eclipse)安装

    蓝桥杯软件类Java语言IDE(Eclipse)安装以及个性化设置 平时都在用idea搞工程类项目,正好报了下学期的蓝桥杯算法比赛,看到官网要求用eclipse编码,之前也参加过ccf-csp的比赛, ...

  7. 蓝桥杯-最大最小公倍数java语言

    蓝桥杯-最大最小公倍数java语言 开局一句话: 做这道题的时候,便没有对最小公倍数十分了解,就直接写了,也是惭愧,走了太多弯路,后来才知道,最小公倍数不是单单的几个数相乘就完了. 问题描述: 已知一 ...

  8. 蓝桥杯7届c语言 c组答案,第七届蓝桥杯C语言C组-(自己懂的题目)

    第七届蓝桥杯C语言C组-(自己懂的题目) 表示刚刚查了成绩,省赛一等奖,有资格去北京了,然后写一下总结, 先来写一下我懂的题目,毕竟我也是菜鸟,听说国赛比预赛难几个等级... 第一题 报纸页数 X星球 ...

  9. 蓝桥杯java和c语言区别_C语言蓝桥杯比赛原题和解析

    蓝桥杯:在计算机编程领域,是具有一定含金量的竞赛,用于选拔信息技术人才. 一般分为多个领域,其中包含了C/C#/C++/Java/Python等编程语言的测试题,多为算法的设计题. 下面,在搜题过程中 ...

  10. 17年第八届蓝桥杯省赛(C语言B组) 题解

    最近 又从新做了一遍,主要是用代码实现.跑出答案... 1: 标题: 购物单 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦,但又不好推辞. ...

最新文章

  1. IntelliJ 中设置与Eclipse中 Ctrl+1 功能类似的快捷键
  2. Golang Study 一 定时器使用
  3. MongoDB数据库(5.mongodb的聚合操作以及mongodb的高级查询2)
  4. 2019 年百度之星·程序设计大赛 - 初赛二
  5. html怎么无损插入背景音乐,HTML插入背景音乐方法【全】
  6. [211渣硕] 腾讯/阿里/携程 详细NLP算法实习 面经
  7. 一个基于Spring Boot+Vue+Redis的物联网智能家居系统,可二次开发接私活!
  8. 《高质量程序设计指南——C++/C》(第三版)
  9. 可行性研究报告——机房收费系统
  10. SIM卡相关知识浅谈
  11. 计算机硬盘的容量的最小,计算机硬盘容量大小怎么计算
  12. Could not find a declaration file for module ‘xxx‘. ‘xxx‘ implicitly has an ‘any‘ type.
  13. python快速幂算法解决大数取模
  14. 分享6款好用并免费的远程管理工具
  15. 计算机基础-工控机、上位机、下位机、stm32、单片机
  16. 翻译:Pong Game Tutorial
  17. 电量监测程序 c语言,基于单片机的电量检测系统设计方案.doc
  18. 麦克风产品 麦克风元器件 市场调研
  19. 今年应避免的网站营销错误
  20. 微信加粉啦 - 微信加粉统计管理的解决方案;

热门文章

  1. mac中如何在PS中使用Cutterman工具快速切图
  2. flutter 编译不通过问题
  3. Java小游戏:冒险岛
  4. url 中文字符参数 php,php处理带有中文URL的方法
  5. webservice接口开发详解(附完整流程demo)
  6. Centos 7搭建Nagios
  7. Java校验文件是否损坏
  8. TOUGH系列软件建模实践方法及在地下水、CO2地质封存、水文地球化学、地热等多相多组分系统多过程耦合高级教程
  9. Jquery重新学习之二[属性attr(),removeAttr(),prop(),removeProp()]
  10. L010-老男孩linux高端运维课程—第二关linux命令及基础手把手实战