#include <algorithm>#include <cstdio>#include <cstring>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;} (1 分) 当输入的 的时候,程序输出的答案为 3。
在 dfs 函数运行过程中, 的取值会满足 。
删除第 19 行的 flag[i]=false;,对答案不会产生影响。
当输入的 的时候,程序输出的答案为( )。
如果因为某些问题,导致程序运行第 25 行的 dfs 函数之前,数组 p 的初值并不全为 0,则对程序的影响是( )。
假如删去第 14 行的 if(flag[i]) continue;,输入 3,得到的输出答案是( )。