图:
#include <stdio.h>
/*
Grapg:
A - B - C
| \ | |
D E F
| /
G - H
*/
// 根据图建立一个矩阵
int graph[8][8] = {
// A B C D E F G H
{0, 1, 0, 1, 1, 0, 0, 0}, // A
{1, 0, 1, 0, 1, 0, 0, 0}, // B
{0, 1, 0, 0, 0, 1, 0, 0}, // C
{1, 0, 0, 0, 0, 0, 1, 0}, // D
{1, 1, 0, 0, 0, 0, 1, 0}, // E
{0, 0, 1, 0, 0, 0, 0, 0}, // F
{0, 0, 0, 1, 1, 0, 0, 1}, // G
{0, 0, 0, 0, 0, 0, 1, 0}, // H
};
void recurse(int row)
{
// 标记已经走过的点
for (int i = 0; i < 8; i++)
{
graph[i][row] = 0;
}
for (int i = 0; i < 8; i++)
{
if ( 1 == graph[row][i] )
{
printf("%c ", i + 65);
recurse(i);
}
}
}
int main(void)
{
char start;
printf("Input start point:"); // 输入起点
scanf("%c", &start);
printf(">> ");
printf("%c ", start);
recurse(start - 65);
return 0;
}
终端运行结果 :
Input start point: A
>> A B C F E G D H
Input start point: B
>> B A D G E H C F
Input start point: E
>> E A B C F D G H