无向图回路算法

#include   <iostream>  
  using   namespace   std;  
   
  bool   road[8][8]={{0,1,1,0,0,0,1,0}  
                                        ,{1,0,1,0,0,0,0,1}  
                                        ,{1,0,0,1,0,1,0,0}  
                                      ,{0,0,1,0,1,0,0,0}  
                                      ,{0,0,0,1,0,1,0,0}  
                                      ,{0,0,1,0,1,0,1,0}  
                                      ,{1,0,0,0,0,1,0,1}  
                                      ,{0,1,0,0,0,0,1,0}  
  };  
  int   x1[8]={0};  
   
  void   HaMiTonian(int   );  
  void   NextValue(int   );  
  void   display1();  
   
  int   main()  
  {  
  x1[0]=1;  
  HaMiTonian(1);  
  system("pause");  
  return   0;  
  }  
   
  void   HaMiTonian(int   m)  
  {  
  if(m>7)   return   ;  
  L: NextValue(m);  
  if(x1[m]==0)  
  return   ;  
  if(m==7&&road[x1[7]-1][0])  
  display1();  
  else  
          HaMiTonian(m+1);  
  goto   L;  
  }  
   
  void   NextValue(int   k)  
  {  
  int   j;  
  l:x1[k]=(x1[k]+1)%9;  
      if(x1[k]==0)  
      return   ;  
      if(road[x1[k-1]-1][x1[k]-1])  
      {  
      for(   j=0;j<k;j++)  
      if(x1[j]==x1[k])   goto   l;  
              return   ;      
      }  
      else   goto   l;      
  }  
   
  void   display1()  
  {  
  for(int   i=0;i<8;i++)  
  cout<<x1[i]<<"   ";  
  cout<<"1"<<endl;  
  }  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值