Beautiful Arrangement LeetCode solution in C++
1class Solution {2public:3int ans = 0;4bool isBeautiful(vector<int> &v) {5int i = v.size() - 1;6if (v[i] % (i + 1) == 0 || (i + 1) % v[i] == 0) return true;7return false;8}910void solve(int n, vector<int> &p, vector<bool> &seen) {11if (p.size() == n) {12ans++;13return;14}15for (int i = 1; i <= n; i++) {16if (seen[i]) continue;17p.push_back(i);1819if (isBeautiful(p)) {20seen[i] = true;21solve(n, p, seen);22seen[i] = false;23}24p.pop_back();25}26}27int countArrangement(int n) {28vector<int> p;29vector<bool> seen(n + 1, false);30solve(n, p, seen);3132return ans;33}34};