输出邻接矩阵中从第head行出发再回到第head行的环。
java实现
import java.util.Scanner;
/*
5
0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0
4
*/
public class Main {
private int[][] arr;//记录输入数组
private int num;//记录矩阵长度
public int head;
public void input(){
Scanner in=new Scanner(System.in);
num=in.nextInt();
arr=new int[num][num];
for(int i=0;i<num;i++) {
for (int j = 0; j < num; j++) {
arr[i][j] = in.nextInt();
}
}
head=in.nextInt();
}
public void suan(int head,String st){
if(head==this.head&&st.contains(head+"")){//当该节点是head并且st中以及存在该节点,即形成了环
System.out.println(st);
return;
}
for(int i=0;i<num;i++){//遍历该行的节点
if(arr[head][i]==1){
arr[head][i]=0;//将遍历过的节点置0,防止出现死循环
suan(i,st+head);
arr[head][i]=1;//恢复该节点
}
}
}
public static void main(String[] args) {
Main ma=new Main();
ma.input();
ma.suan(ma.head,"");
}
}