void HaMiTonian(int m) //哈密尔顿图遍历
{
if(m>8) return;
L: NextValue(m);
if(x[m]==0)
return;
if(m==7&&G.arcs[0][x[8]-1].adj!=20000)
display();
else
HaMiTonian(m+1);
goto L;
}
void NextValue(int k)
{
int j;
l:x[k]=(x[k]+1)%10;
if(x[k]==0)
return;
if(G.arcs[x[k-1]-1][x[k]-1].adj!=20000)
{
for(j=0;j<k;j++)
if(x[j]==x[k])
goto l;
return;
}
else
goto l;
}
void display()
{
int i=0;
printf("\n\n\t");
for(i=0;i<8;i++)
printf("%s->",G.vex[x[i]-1].sight);
printf("出口");
printf("\n");
}
我不明白 在 第一个 函数中 if(m==7&&G.arcs[0][x[8]-1].adj!=20000) 中的 7 为什么这样设定 ?
ps:这是校园导游中 求推荐游览路线的 一段 代码 有 八个景点 !