题解 | #体操队形#
体操队形
https://ac.nowcoder.com/acm/problem/229386
思路
dfs
过程
代码
#include <iostream>
#include <unordered_map>
using namespace std;
int a[20], n, ans;
bool st[20];
void dfs(int pos)
{
if(pos == n + 1)
{
ans ++;
return;
}
for(int i = 1;i <= n;i ++)
{
if(!st[i])
{
if(st[a[i]]) return;
st[i] = true;
dfs(pos + 1);
st[i] = false;
}
}
}
int main()
{
cin >> n;
for(int i = 1;i <= n;i ++) cin >> a[i];
dfs(1);
cout << ans << endl;
return 0;
}