蓝桥杯第十一届E题

在这里插入图片描述
考试的时候没有做出来,没想到怎么对图进行初始化。赛后才知道可以遍历1到127,一共7为数字,1表示点亮,0表示不点亮,直接深搜就行,最后比较加入hash的节点和遍历到的节点数是否相等。

package test;

import java.util.*;
public class test12 {
	public static void main(String[] args) {
		
		int num=0;
		for(int i=1;i<=127;i++) {
			int[][] map=new int[6][6];
			HashSet<Integer> hash=new HashSet<>();
			String s=Integer.toBinaryString(i);
			int n=s.length();
			for(int j=1;j<=7-n;j++) {
				s="0"+s;
			}
			System.out.print(s+" ");
			int start=0;
			for(int j=0;j<=6;j++) {
				if(s.charAt(j)=='1') {
					switch(j) {
						case 0: map[0][1]=1;map[1][0]=1;start=0;hash.add(0);hash.add(1);break;
						case 1: map[1][2]=1;map[2][1]=1;start=1;hash.add(2);hash.add(1);break;
						case 2: map[2][3]=1;map[3][2]=1;start=2;hash.add(2);hash.add(3);break;
						case 3: map[3][4]=1;map[4][3]=1;start=3;hash.add(3);hash.add(4);break;
						case 4: map[4][5]=1;map[5][4]=1;start=4;hash.add(5);hash.add(4);break;
						case 5: map[5][2]=1;map[2][5]=1;start=5;hash.add(5);hash.add(2);break;
						case 6: map[5][0]=1;map[0][5]=1;start=5;hash.add(5);hash.add(0);break;
					}
				}
			}
			int[] vis=new int[6];
			dfs(map,start,vis);
			int sum=0;
			for(int tmp:vis) {
				sum+=tmp;
			}
			if(hash.size()==sum) {
				num++;
				System.out.print(sum);
			} 
			System.out.println();
		}
		System.out.println(num);
	}
	
	static void dfs(int[][] map,int cur,int[] vis) {
		vis[cur]=1;
		for(int i=0;i<=5;i++) {
			if(vis[i]==0 && map[cur][i]==1) dfs(map,i,vis);
		}
	}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值