资讯详情

第十一届蓝桥杯C++B组 试题E:七段码

试题E:七段码

【问题描述】

上图显示了七段码数码管的图表,共有数码管77段能发光的二 极管,分别标记为a,b,c,d,e,f,ga,b,c,d,e,f,g。

小蓝要选择一部分二极管(至少一个)发光来表达字符。设计字符 所有发光的二极管都需要连接在一起。

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

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

与上 尽管看起来相似,但一行方案可以用来表示不同的字符。

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

例如:b,fb,f发光,其他二极管不发光,因为发光 二极管没有连成一片。

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

答案:80种


#include<iostream> #include<algorithm> #include<vector> #include<set>  using namespace std;  vector<int> g[10]; set<int> res; bool vis[10]; int idx;  //将tmp插入a,让a的每一个人都大到小(只有有序形成)  int getNewNum(int a,int tmp){  int b = 0;  while(a && a < tmp){   b = b*10   a;   a /= 10;  }  a = a*10   tmp;  while(b){   a = a*10   b;   b/=10;  }  return a; }  void dfs(int x,int num){  for(int tmp:g[x]){   if(!vis[tmp]){    int a = getNewNum(num,tmp);    res.insert(a);    vis[tmp] = true;    dfs(tmp,a);    vis[tmp] = false;   }  } }   int main(){  int m;  cin>>m;  for(int i = 1; i <= m; i  ){   int u,v;   cin>>u>>v;   //构建邻接表,矩阵也可以相邻    g[u].push_back(v);   g[v].push_back(u);  }  for(int i = 1; i <= 7; i  ){   fill(vis,vis 10、0);//初始化;    dfs(i,0);  }  printf("共有%d种\n",res.size());  printf("****************以下是所有组合***********\n");  for(int x:res){   cout<<x<<'\n';  }  return 0; }  /* 10 1 2 1 3 2 4 3 4 2 5 3 6 4 5 4 6 5 7 6 7 */

标签: 二极管gf1m31gf6二极管

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台