资讯详情

2022-2-24

七段码

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

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

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

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

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

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

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

小蓝能用七段码数码管表达多少种不同的字符?

#include <iostream> using namespace std; // a b c d e f g 与下面对应 // 1 2 3 4 5 6 7 #include<cstring>//memset()函数 int e[7][7]={     
      {0,0,0,0,0,1,0},              {1,0,1,0,0,0,0,1},              {0,1,0,1,0,0,0,1},              {0,0,1,0,1,0,0              {0,0,0,1,0,1,1,1              {1,0,0,0,0,1,0,1,0,1},              {0,1,1,0,1,1,0}; int choose[7];//对一方案:若i在此方案中,choose[i]=1 int vis[7];//dfs中,记录顶点是否访问过的标志 void dfs(int k){   for(int i=0;i<7;i  ){//i和k相邻,i它包含在计划中,i没有访问     if(e[k][i]&&choose[i]&&!vis[i]){       vis[i]=1;       dfs(i);     }   } } int main() {   int i,j,k,x,ans=127;//2进制1111111   for(int i=1;i<=127;i  ){     memset(choose,0,sizeof(choose));     memset(vis,0,sizeof(vis));//清零     x=i;j=0;     while(x){       if(x%2) choose[j]=1;       x/=2;       j  ;//j记录位置     }     k=0;     while(choose[k]==0) k  ;////在计划的顶点找到一个包含在内的     vis[k]=1;     dfs(k);     for(j=0;j<7;j  ){       if(choose[j]&&vis[j]==0) break;     }     if(j<7) ans--;   }   cout<<ans<<endl;   return 0; } 

标签: 二极管afe0505

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

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