SOURCE

console 命令行工具 X clear

                    
>
console
function hanmilton(n, x=[], c=[[]]){
    let i = 0, k = 0, visited = [];
    for(i = 0; i < n; i++){
        x[i] = 0;
        visited[i] = 0;
    }
    console.log('初始化','长度='+n,'访问列表='+x,'矩阵='+c,'访问下标='+k,'访问标志='+visited)
    k = 0;
    visited[0] = 1;
    x[0] = 0;
    k = k + 1;
    while(k >= 0){
        console.log('while','访问列表='+x,'顶点='+k,'访问标志='+visited)
        x[k] = x[k] + 1;
        while(x[k] < n){
            console.log('-->','访问列表='+x,'顶点='+k,'访问标志='+visited[x[k]],'是否连通='+c[x[k-1]][x[k]])
            if(visited[x[k]]==0 && c[x[k-1]][x[k]]==1){
                console.log((k-1)+'-'+k+' 连通 未记录')
                break;
            }else{
                x[k] = x[k] + 1;
            }
        }
        //c[x[k]][0] == 1 最后的顶点连接第一个结点
        if(x[k]<n && k == n-1 && c[x[k]][0] == 1){
            console.log("找到回路", x);
            return;
        }else if(x[k]<n && k<n-1){
            console.log("记录", '顶点='+k, '访问列表='+x);
            visited[x[k]] = 1;
            k = k+1;
        }else{
            console.log("回溯",'顶点='+k, '访问列表='+x);
            x[k] = 0;
            visited[x[k]] = 0;
            k = k-1;
        }
    }
}
let ar = [[0,1,0,1],[1,0,1,0],[0,1,0,1],[1,0,1,0]];
hanmilton(4,[],ar)
<h1>算法-无向图连通图-哈密尔顿Hamilton回路</h1>