[C] 纯文本查看 复制代码
#include<bits/stdc++.h>
using namespace std;
static int map1[9][9]={
0,0,0,0,0,0,0,0,0,
0,1,0,0,0,1,0,1,1,
0,0,1,1,1,1,0,1,1,
0,0,1,1,0,0,1,1,1,
0,0,1,0,1,1,1,0,1,
0,1,1,0,1,1,1,0,0,
0,0,0,1,1,1,1,1,0,
0,1,1,1,0,0,1,1,0,
0,1,1,1,1,0,0,0,1
};//交通关系图
static int s[9]={0};//记录使用状态
static int b[100]={0};
static int t1[9],t2[9],cnt,min_s=INT_MAX;
void dfsjiaotongtu(int n)
{
for(int i=2;i<=8;i++)
{
if(map1[n][i]==0&&s[i]==0)//两地之间是否可走,是否已走过
{
cnt++;
s[i]=1;//当前点已使用
t1[cnt]=i;//记录当前点
if(i==8)
{
if(cnt<min_s)
{
min_s=cnt;
memmove(t2,t1,sizeof(t1));
}
}
else
{
dfsjiaotongtu(i);
}
t1[cnt]=0;
cnt--;
s[i]=0;
}
}
}
void jiaotongtu_ss()
{
s[1]=1;//A已使用
t1[0]=1;
dfsjiaotongtu(1);
cout<<min_s<<endl;
for(int i=0;i<=min_s;i++)
{
cout<<t2[i]<<endl;
}
}
void display_jt(int a[],int b[],int t)
{
while(1)
{
cout<<char(a[t]-1+'A');
t=b[t];
if(t==0)
{
break;
}
cout<<"<--";
}
}
void jiaotongtu()
{
int a[100]={0};//保存树图
int s[9]={0};//记录使用状态
int b[100]={0};
a[1]=1;//树根是A
s[1]=1;//A已使用
int h=0,t=1;//头指针,尾指针
while(1)
{
h++;
for(int i=2;i<=8;i++)
{
if(map1[a[h]][i]==0&&s[i]==0)//两地之间是否可走,是否已走过
{
t++;
a[t]=i;//把当前点存入到尾指针
s[i]=1;//当前点已使用
b[t]=h;//记录当前点的根
if(i==8)
{
display_jt(a,b,t);
return ;
}
}
}
if(h>=t) break;
}
return ;
}
void madebianli2()
{
int x,y,n,m;
cin>>n>>m>>x>>y;
int h=0,t=0,a[400][400]={0};
int x1[8]={2,1,-1,-2,2,1,-1,-2};
int y1[8]={1,2,2,1,-1,-2,-2,-1};
while(1)
{
h++;
for(int i=0;i<8;i++)
{
}
}
}