C++ | Leetcode C++题解之第526题优美的排列

题目:

题解:

cpp 复制代码
class Solution {
public:
    int countArrangement(int n) {
        vector<int> f(1 << n);
        f[0] = 1;
        for (int mask = 1; mask < (1 << n); mask++) {
            int num = __builtin_popcount(mask);
            for (int i = 0; i < n; i++) {
                if (mask & (1 << i) && (num % (i + 1) == 0 || (i + 1) % num == 0)) {
                    f[mask] += f[mask ^ (1 << i)];
                }
            }
        }
        return f[(1 << n) - 1];
    }
};
相关推荐
ChoSeitaku18 分钟前
16.C++入门:list|手撕list|反向迭代器|与vector对比
c++·windows·list
氷泠18 分钟前
课程表系列(LeetCode 207 & 210 & 630 & 1462)
算法·leetcode·拓扑排序·反悔贪心·三色标记法
老鼠只爱大米23 分钟前
LeetCode算法题详解 15:三数之和
算法·leetcode·双指针·三数之和·分治法·three sum
Qhumaing24 分钟前
C++学习:【PTA】数据结构 7-1 实验6-1(图-邻接矩阵)
c++·学习·算法
No0d1es24 分钟前
2025年12月 GESP CCF编程能力等级认证C++一级真题
开发语言·c++·青少年编程·gesp·ccf
2301_7737303131 分钟前
系统编程—在线商城信息查询系统
c++·html
郝学胜-神的一滴32 分钟前
深入理解Linux中的Try锁机制
linux·服务器·开发语言·c++·程序人生
菜鸟233号38 分钟前
力扣416 分割等和子串 java实现
java·数据结构·算法·leetcode
Swift社区43 分钟前
LeetCode 469 凸多边形
算法·leetcode·职场和发展
圣保罗的大教堂1 小时前
leetcode 1458. 两个子序列的最大点积 困难
leetcode