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];
    }
};
相关推荐
喜欢吃燃面4 分钟前
C++算法竞赛:位运算
开发语言·c++·学习·算法
草莓熊Lotso7 分钟前
《详解 C++ Date 类的设计与实现:从运算符重载到功能测试》
开发语言·c++·经验分享·笔记·其他
困鲲鲲7 分钟前
CPP多线程2:多线程竞争与死锁问题
c++·多线程·死锁
快乐的划水a9 小时前
组合模式及优化
c++·设计模式·组合模式
星星火柴93610 小时前
关于“双指针法“的总结
数据结构·c++·笔记·学习·算法
艾莉丝努力练剑11 小时前
【洛谷刷题】用C语言和C++做一些入门题,练习洛谷IDE模式:分支机构(一)
c语言·开发语言·数据结构·c++·学习·算法
阿巴~阿巴~13 小时前
深入解析C++ STL链表(List)模拟实现
开发语言·c++·链表·stl·list
旺小仔.14 小时前
双指针和codetop复习
数据结构·c++·算法
jingfeng51414 小时前
C++ STL-string类底层实现
前端·c++·算法
郝学胜-神的一滴14 小时前
基于C++的词法分析器:使用正则表达式的实现
开发语言·c++·程序人生·正则表达式·stl