当前位置: 首页 > news >正文

LeetCode2741.特别的排列 状压

暴力枚举的话是n!

考虑状压DP,其实就是用二进制表示状态 再进行暴力 同时加一个记忆化就好了

这里有常用技巧:

全集(1<<n)-1

增加某个元素 x  |  (1<<i)

删除某个元素 x & ~(1<<i)

const int N = 15;
int dp[1<<N][N];
vector<int>nums1;
int mod = 1e9+7;
int n;int dfs(int u,int id){if(!u)return 1;if(~dp[u][id])return dp[u][id];int res = 0;for(int i=0;i<n;i++){if((u>>i&1)&&(nums1[id]%nums1[i]==0||nums1[i]%nums1[id]==0))res  = (res + dfs(u&~(1<<i),i))%mod;}res%=mod;return dp[u][id] = res;}class Solution {
public:int specialPerm(vector<int>& nums) {memset(dp,-1,sizeof dp);n = nums.size();nums1 = nums;nums1.push_back(1);return dfs((1<<n)-1,n);}
};

http://www.lryc.cn/news/211479.html

相关文章:

  • 【Linux】Centos 8 服务器部署:阿里云域名注册、域名解析、个人网站 ICP 备案详细教程
  • Sass、Less和Stylus之间有什么主要的区别?
  • 第八章 软件测试自动化
  • 科大讯飞勾勒生成式AI输入法“模样”,开启下一代输入法革命
  • OV-VG: A Benchmark for Open-Vocabulary Visual Grounding
  • win10 javaweb 项目8080端口被占用
  • C语言每日一题(22)合并两个有序数组
  • C++学习day--24 推箱子游戏图像化开发
  • YOLOv8中的After Fuse指的是什么?
  • R-FCN: Object Detection via Region-based Fully Convolutional Networks(2016.6)
  • Linux服务器部署Spring Boot项目的一些shell命令脚本
  • Youtube DNN:Deep Neural Networks for YouTube Recommendations
  • Python 入门基础知识点有哪些?
  • 【每日一题】补档 CF487B. Strip | 数据结构杂烩 -> 单调队列 | 困难
  • 向量数据库和普通关系型数据库的区别,LAXCUS支持哪种数据库?
  • 操作系统 --- 存储器管理
  • Python selenium无界面headless
  • JavaScript 中的负无穷大是什么?
  • 2023年十大地推和网推拉新app推广接单平台,一手单渠道
  • mybatis-plus的进阶使用
  • centos安装vim编辑器
  • PostgreSQL InvalidMessage Cache 同步机制
  • C#,数值计算——Globals的计算方法与源程序
  • 腾讯云香港服务器轻量24元一个月性能测试
  • 深度学习之基于YoloV8的行人跌倒目标检测系统
  • Seata入门系列【16】XA模式入门案例
  • 高级深入--day44
  • Apache Doris (四十八): Doris表结构变更-替换表
  • 消息认证码--数字签名--证书
  • 四个制作PPT的小技巧