Beautiful Arrangement LeetCode solution in C++

1
class Solution {
2
public:
3
int ans = 0;
4
bool isBeautiful(vector<int> &v) {
5
int i = v.size() - 1;
6
if (v[i] % (i + 1) == 0 || (i + 1) % v[i] == 0) return true;
7
return false;
8
}
9

10
void solve(int n, vector<int> &p, vector<bool> &seen) {
11
if (p.size() == n) {
12
ans++;
13
return;
14
}
15
for (int i = 1; i <= n; i++) {
16
if (seen[i]) continue;
17
p.push_back(i);
18

19
if (isBeautiful(p)) {
20
seen[i] = true;
21
solve(n, p, seen);
22
seen[i] = false;
23
}
24
p.pop_back();
25
}
26
}
27
int countArrangement(int n) {
28
vector<int> p;
29
vector<bool> seen(n + 1, false);
30
solve(n, p, seen);
31

32
return ans;
33
}
34
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0