블 루 브리지 컵 --- 7 단 야드

제목 설명 파랑 이 는 7 단 디지털 파이프 로 특수 한 문 자 를 표시 해 야 한다.7 단 코드 위의 그림 은 7 단 코드 디지털 관 의 그림 을 보 여 주 었 다. 디지털 관 에는 모두 7 단 이 빛 을 발 할 수 있 는 다이오드 가 있 는데 각각 a, b, c, d, e, f, g 로 표시 되 어 있다.파란색 은 일부 다이오드 (적어도 하나) 의 발광 을 선택 하여 문 자 를 표현 해 야 한다.문자 의 표현 을 디자인 할 때 모든 빛 나 는 다이오드 가 한 조각 으로 연결 되 어야 한다.예 를 들 어 b 발광, 다른 다이오드 가 발광 하지 않 으 면 한 문 자 를 표현 할 수 있다.예 를 들 어 c 발광, 기타 다이오드 가 발광 하지 않 으 면 한 문 자 를 표현 할 수 있다.이 방안 은 이전 줄 의 방안 과 비슷 해 보이 지만 다른 문 자 를 표시 하 는 데 사용 할 수 있다.예 를 들 어 a, b, c, d, e 발광, f, g 불 발광 은 한 문 자 를 표현 할 수 있다.예 를 들 어 b, f 가 빛 을 발 하고 다른 다이오드 가 빛 을 발 하지 않 으 면 한 가지 문 자 를 표현 할 수 없다. 빛 나 는 다이오드 가 한 조각 으로 연결 되 지 않 았 기 때문이다.블 루 는 7 단 디지털 튜브 로 몇 가지 다른 문 자 를 표현 할 수 있 습 니까?
#include
using namespace std;
const int maxn=7;
int father[maxn],ans;
bool vis[maxn],is_unicom[maxn][maxn];
void star(){
     
	is_unicom[0][1]=is_unicom[0][5]=true;
	is_unicom[1][0]=is_unicom[1][2]=is_unicom[1][6]=true;
	is_unicom[2][1]=is_unicom[2][3]=is_unicom[2][6]=true;
	is_unicom[3][2]=is_unicom[3][4]=true;
	is_unicom[4][3]=is_unicom[4][5]=is_unicom[4][6]=true;
	is_unicom[5][0]=is_unicom[5][4]=is_unicom[5][6]=true;
	is_unicom[6][1]=is_unicom[6][2]=is_unicom[6][4]=is_unicom[6][5]=true;
}
int find_root(int x){
     
	int i=x;
	while(x!=father[x])x=father[x];
	while(i!=father[i]){
     
		int temp=i;
		i=father[i];
		father[temp]=x;
	}
	return x;
}
void Union(int a,int b){
     
	int A=find_root(a),B=find_root(b);
	if(A!=B)father[A]=B;
}
void dfs(int i){
     
	if(i==maxn){
     
		for(int i=0;i<maxn;i++)father[i]=i;
		for(int i=0;i<maxn;i++)
			for(int j=0;j<maxn;j++)
				if(is_unicom[i][j]&&vis[i]&&vis[j])Union(i,j);
		int sum=0;
		for(int i=0;i<maxn;i++)if(vis[i]&&i==father[i])++sum;
		if(sum==1)++ans;
		return;
	}
	vis[i]=true;dfs(i+1);
	vis[i]=false;dfs(i+1);
}
int main(){
     
	star();
	dfs(0);
	cout<<ans<<endl;
	return 0;
}

좋은 웹페이지 즐겨찾기