足球网站模板下载,个人简历word文档,搜索推广平台有哪些,wordpress提交内容表格最近在看算法#xff0c;看到这个题#xff0c;觉得挺经典的#xff0c;收起。 分析#xff1a; 1 、把问题归结为图结构的遍历问题。实际上6个数字就是六个结点#xff0c;把六个结点连接成无向连通图#xff0c;对于每一个结点求这个图形的遍历路径#xff0c;所有结点…最近在看算法看到这个题觉得挺经典的收起。 分析 1 、把问题归结为图结构的遍历问题。实际上6个数字就是六个结点把六个结点连接成无向连通图对于每一个结点求这个图形的遍历路径所有结点的遍历路径就是最后对这 6个数字的排列组合结果集。 2、 35不能相连实际要求这个连通图的结点35之间不能连通, 可在构造图结构时就满足改条件然后再遍历图。 3、 不能有重复: 考虑到有两个2明显会存在重复结果可以把结果集放在TreeSet中过滤重复结果 4、 4不能在第三位: 仍旧在结果集中去除满足此条件的结果。 package JingDian;import java.util.Iterator;
import java.util.TreeSet;public class numberRandom {String[] stra {1,2,2,3,4,5};int n stra.length;boolean[] visited new boolean[n];String result ;TreeSetString ts new TreeSetString();int[][] a new int[n][n];private void searchMap(){for(int i0;in;i){for(int j0;jn;j){if(ij){//图中对角线部分是无法访问的a[i][j]0;}else{a[i][j]1;}} }//3和5不能相连a[3][5]0;a[5][3]0;//开始遍历for(int i0;in;i){search(i);}IteratorString it ts.iterator();while(it.hasNext()){String str it.next();//4不能在第三位if(str.indexOf(4)!2){System.out.println(str);}}}//这是个深度优先的遍历private void search(int startIndex){visited[startIndex] true; result result stra[startIndex];if(result.length() n){ts.add(result);}for(int j0;jn;j){if(a[startIndex][j]1visited[j]false){search(j);}else{continue;}}//一个result结束后踢掉最后一个寻找别的可能性若没有的话则继续向前踢掉当前最后一个result result.substring(0,result.length()-1);visited[startIndex] false;}public static void main(String[] args){new numberRandom().searchMap();}} 转载于:https://www.cnblogs.com/skylar/p/3671795.html