2020蓝桥杯省赛---java---A---4(七段码)
生活随笔
收集整理的這篇文章主要介紹了
2020蓝桥杯省赛---java---A---4(七段码)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述
思路分析
代碼實現
package lanqiao;public class Main {public static int N=10;public static int e[][]=new int[N][N];//存儲二極管相鄰的信息public static int f[]=new int[N];//并查集public static int ans=0;public static boolean st[]=new boolean[N];//true表示發光public static void init(){e[1][2]=e[1][6]=1;//表示相鄰e[2][1]=e[2][7]=e[2][3]=1;e[3][2]=e[3][7]=e[3][4]=1;e[4][3]=e[4][5]=1;e[5][7]=e[5][6]=e[5][4]=1;e[6][5]=e[6][7]=e[6][1]=1;e[7][2]=e[7][3]=e[7][5]=e[7][6]=1;}public static int find(int u){if(f[u]==u) return u;f[u]=find(f[u]);return f[u];}public static void dfs(int d){//1-7if(d>7){//終止條件for(int i=1;i<=7;i++){//并查集初始化f[i]=i;}for(int i=1;i<=7;i++){for(int j=1;j<=7;j++){if(e[i][j]==1&&st[i]==true&&st[j]==true){//把所有發光且相鄰的二極管合并int fx=find(i),fy=find(j);if(fx!=fy){f[fx]=fy;//合并}}}}int k=0;//表示產生的集合的個數for(int i=1;i<=7;i++){if(st[i] &&f[i]==i)k++;}if(k==1) ans++;//只產生一個集合,說明所有的發光二極管是連成一片的return;}st[d]=true;dfs(d+1);st[d]=false;dfs(d+1);}public static void main(String[] args) {init();dfs(1);System.out.println(ans);}}答案
80
總結
以上是生活随笔為你收集整理的2020蓝桥杯省赛---java---A---4(七段码)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 远望号配置?
- 下一篇: 2020蓝桥杯省赛---java---A