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];
    }
};
相关推荐
Live&&learn2 小时前
算法训练-数据结构
数据结构·算法·leetcode
胡萝卜3.03 小时前
掌握C++ map:高效键值对操作指南
开发语言·数据结构·c++·人工智能·map
电子_咸鱼4 小时前
【STL string 全解析:接口详解、测试实战与模拟实现】
开发语言·c++·vscode·python·算法·leetcode
月夜的风吹雨6 小时前
【封装红黑树】:深度解析map和set的底层实现
c++·set·map·封装
列逍6 小时前
深入理解 C++ 智能指针:原理、使用与避坑指南
开发语言·c++
C语言小火车7 小时前
C/C++ 指针全面解析:从基础到进阶的终极指南
c语言·开发语言·c++·指针
wefg18 小时前
【C++】特殊类设计
开发语言·c++
帅中的小灰灰8 小时前
C++编程原型设计模式
开发语言·c++
凌康ACG8 小时前
Sciter窗口间状态事件交互(四)
c++·sciter
“αβ”9 小时前
MySQL库的操作
linux·服务器·网络·数据库·c++·mysql·oracle