Chri_K

哈密顿路(dfs)
#include<iostream>
#include<cstring>
using namespace std;
int a[101][101],n,flag,num;
int b[101],d[101];
void print()
{
    flag=1;
    for(int i=1;i<=n;i++)
    {
        cout<<d[i]<<" ";
    }          
}    
void dfs(int k,int num)
{ 
    b[k]=1;
      d[num]=k; 
      if(num==n) 
    {
        print();  
        cout<<endl;
    }
      for(int i=1;i<=n;i++)
      {
          if((b[i]==0)&&(a[k][i]==1))
          {
              dfs(i,num+1);
        }    
    }        
      b[k]=0;
}
int main()
{  
    flag=0;
       cin>>n;
       memset(b,0,sizeof(b)); 
       for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            cin>>a[i][j];
        }  
    }    
       for(int i=1;i<=n;i++)
       {
           dfs(i,1);
    }  
    if (flag==0) 
    {
        cout<<"no road";
    }           
    return 0;    
}
//7
//0 1 0 1 1 0 0 
//1 0 1 0 1 0 0 
//0 1 0 0 0 0 1 
//1 0 0 0 0 0 0 
//1 1 0 0 0 1 0
//0 0 0 0 1 0 1 
//0 0 1 0 0 1 0

 

posted on 2020-10-15 16:34  Chri_K  阅读(65)  评论(0编辑  收藏  举报