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];
    }
};
相关推荐
沧海一笑-dj1 小时前
【C++】Visual Studio 2026下载和安装
c++·visual studio·vs·vs2026
HugoStudio_SWAN1 小时前
洛谷 P1321 单词覆盖还原——从蜡板上的密信到数字水印
c++·学习·程序人生·算法
励志不掉头发的内向程序员1 小时前
【LibreCAD 2D架构】从鼠标点击到屏幕像素:LibreCAD绘图架构全链路解析之Action与命令系统
linux·开发语言·c++·qt·学习·系统架构
码匠许师傅2 小时前
【设计模式精讲】15.享元模式(Flyweight)
c++·设计模式·享元模式·uml
pingglala2 小时前
C++线程安全队列对比
开发语言·c++
退休倒计时2 小时前
【每日五题】leetcode TypeScript
算法·leetcode·职场和发展·typescript
Demon--hx2 小时前
C++访问权限问题
开发语言·c++
乐观勇敢坚强的老彭2 小时前
c++信息学竞赛数组大小规划与避坑速查表
开发语言·c++
深海向晚2 小时前
NX二次开发:递归遍历特征组并收集所有特征
c++
重生之小比特2 小时前
【初阶C++】list
开发语言·c++·list