题目(材料题)
|
01 #include <algorithm> 02 #include <cstdio> 03 #include <cstring> 04 bool flag[27]; 05 int n; 06 int p[27]; 07 int ans = 0; 08 void dfs(int k) { 09 if (k == n + 1){ 10 ++ ans; 11 return; 12 } 13 for (int i = 1; i <= n; ++i) { 14 if (flag[i]) continue; 15 if (k > 1 && i == p[k - 1] + 1) continue; 16 p[k] = i; 17 flag[i] = true; 18 dfs(k + 1); 19 flag[i] = false; 20 } 21 return; 22 } 23 int main() { 24 scanf("%d", &n); 25 dfs(1); 26 printf("%d\n", ans); 27 return 0; 28 } |
||

关注我们