二、阅读程序-1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | #include <algorithm> #include <cstdio> #include <string> bool flag[27]; int n; int p[27]; int ans = 0; void dfs(int k) { if (k == n + 1) { ++ans; return; } for (int i = 1; i <= n; ++i) { if (flag[i]) continue; if (k > 1 && i == p[k - 1] + 1) continue; p[k] = i; flag[i] = true; dfs(k + 1); flag[i] = false; } return; } int main() { scanf("%d", &n); dfs(1); printf("%d\n", ans); return 0; } |