https://nanti.jisuanke.com/t/10963
简单dfs
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
int G[20][20];
bool vis[100];
bool VIS[100];
int A[2000];
int N, V;
void dfs(int v, int cur) {
if (V==v && cur!=1) {
for (int i = 0; i < cur-1; i++) {
printf("%d", A[i]);
}
printf("\n");
return;
}
for (int i = 0; i < N; i++) {
if (!vis[i] && G[v][i] && !VIS[i]) {
vis[i] = true;
A[cur] = i;
dfs(i, cur+1);
vis[i] = false;
}
}
}
int main()
{
while (~scanf("%d", &N)) {
memset(VIS, 0, sizeof(VIS));
for (int i = 0; i < N; i++)
for (int j = 0; j < N; j++)
scanf("%d", &G[i][j]);
for (int i = 0; i < N; i++) {
memset(vis, 0, sizeof(vis));
A[0] = i;
V = i;
dfs(i, 1);
VIS[i] = true;
}
printf("\n");
}
return 0;
}