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];
    }
};
相关推荐
zmzb01038 小时前
C++课后习题训练记录Day120
开发语言·c++
ximu_polaris8 小时前
设计模式(C++)-行为型模式-状态模式
c++·设计模式·状态模式
ximu_polaris8 小时前
设计模式(C++)-行为型模式-迭代器模式
c++·设计模式·迭代器模式
tjl521314_218 小时前
01C++ 类定义与访问控制(封装)
java·开发语言·c++
阿Y加油吧8 小时前
二刷 LeetCode:152. 乘积最大子数组 & 416. 分割等和子集 复盘笔记
笔记·算法·leetcode
smj2302_7968265217 小时前
解决leetcode第3911题.移除子数组元素后第k小偶数
数据结构·python·算法·leetcode
c++之路18 小时前
C++信号处理
开发语言·c++·信号处理
_深海凉_20 小时前
LeetCode热题100-寻找两个正序数组的中位数
算法·leetcode·职场和发展
故事还在继续吗21 小时前
C++20关键特性
开发语言·c++·c++20
青少儿编程课堂21 小时前
2026青少儿信息素养大赛备赛指南!Python/Scratch/C++备考要点
开发语言·c++·python