#include "stdio.h"
int ans = 0, n;
bool visit[30];
void dfs(int cur) {
if (cur == n) {
++ans;
return ;
}
for (int i = 0; i < n; ++i) {
if (i == cur || visit[i])
continue;
visit[i] = true;
dfs(cur + 1);
visit[i] = false;
main()
{
scanf("%d", &n);
for (int i = 0; i < n; ++i)
for (int i = 1; i < n; ++i) {
dfs(1);
printf("%d\n", ans);
n不能太大,不然會執行很久的。
#include "stdio.h"
int ans = 0, n;
bool visit[30];
void dfs(int cur) {
if (cur == n) {
++ans;
return ;
}
for (int i = 0; i < n; ++i) {
if (i == cur || visit[i])
continue;
visit[i] = true;
dfs(cur + 1);
visit[i] = false;
}
}
main()
{
scanf("%d", &n);
for (int i = 0; i < n; ++i)
visit[i] = false;
for (int i = 1; i < n; ++i) {
visit[i] = true;
dfs(1);
visit[i] = false;
}
printf("%d\n", ans);
}
n不能太大,不然會執行很久的。