2741. 特别的排列 Medium
给你一个下标从 0 开始的整数数组 nums ,它包含 n 个 互不相同 的正整数。如果 nums 的一个排列满足以下条件,我们称它是一个特别的排列:
·对于 0 <= i < n - 1 的下标 i ,要么 nums[i] % nums[i+1] == 0 ,要么 nums[i+1] % nums[i] == 0 。
请你返回特别排列的总数目,由于答案可能很大,请将它对 109 + 7 取余 后返回。
示例 1:
输入:nums = [2,3,6]
输出:2
解释:[3,6,2] 和 [2,6,3] 是 nums 两个特别的排列。
示例 2:
输入:nums = [1,4,3]
输出:2
解释:[3,1,4] 和 [4,1,3] 是 nums 两个特别的排列。
提示:
·2 <= nums.length <= 14
·1 <= nums[i] <= 109
题目大意:在只有可整除的数字能相邻的情况下计算所有合法排列的数量。
分析:
(1)由于可整除的数字可以相邻,因此可整除的两个数之间可以视为有一条无向边,用图的思想处理本题,将每个数字视为一个结点。分别从数组中的每个结点开始进行一次深度优先遍历,计算可以连接所有结点的路径的个数sum,得到的sum即为所求的合法排列的数量;
(2)由于长度为N的数组有N!种排列,用枚举的方式搜索会超时,因此采用记忆化搜索加速计算。设当前遍历的结点为i,当前的状态为flag,状态flag表示已遍历的结点和未遍历的结点,如flag=0b011001时表示第2、3、6个结点已被遍历,而第1、4、5个结点还没有遍历。因为在相同状态(flag)下遍历i结点,返回的合法排列数量是相同的,所以建立二维数组dp,其中dp[i][flag]表示在状态flag的情况下遍历i结点可获得的合法排列数量,以此记录已遍历过的情况,加速深度优先搜索。
class Solution {
public:int specialPerm(vector<int>& nums) {int N=nums.size(),flag=(1<<N)-1,ans=0;vector<vector<int>> dp(N,vector<int>(1<<N,-1));function<int(int)> dfs=[&](int root){if(dp[root][flag]!=-1) return dp[root][flag];int sum=0;for(int i=0,f=1;i<N;++i,f<<=1){if(root!=i&&(flag&f)&&!(nums[i]%nums[root]&&nums[root]%nums[i])){flag^=f;sum=(sum+dfs(i))%1000000007;flag^=f;}}return dp[root][flag]=sum;};for(int i=0;i<N;++i) dp[i][0]=1;for(int i=0,f=1;i<N;++i,f<<=1){flag^=f;ans=(ans+dfs(i))%1000000007;flag^=f;}return ans;}
};相关文章:
2741. 特别的排列 Medium
给你一个下标从 0 开始的整数数组 nums ,它包含 n 个 互不相同 的正整数。如果 nums 的一个排列满足以下条件,我们称它是一个特别的排列: 对于 0 < i < n - 1 的下标 i ,要么 nums[i] % nums[i1] 0 ,要么 nums[…...
读AI新生:破解人机共存密码笔记15辅助博弈
1. 辅助博弈 1.1. assistance game 1.2. 逆强化学习如今已经是构建有效的人工智能系统的重要工具,但它做了一些简化的假设 1.2.1. 机器人一旦通过观察人类学会了奖励函数,它就会采用奖励函数,这样它就可以执行相同的任务 1.2.1.1. 解决这…...
C++ 因项目需求,需要将0~2的32次方这个区间的数字保存到内存当中(内存大小为4G),并且可以实现对任意一个数字的增删。(先叙述设计思路,再写岀代码)
问题: C 因项目需求,需要将0~2的32次方这个区间的数字保存到内存当中(内存大小为4G),并且可以实现对任意一个数字的增删。(先叙述设计思路,再写岀代码) 解答 设计思路代码实现说明 为了在有限的内存(4GB)中存储和操作 …...
Linux 下的性能监控与分析技巧
在日常的服务器管理和问题诊断过程中,Linux 命令行工具提供了强大的支持。本文通过几个常用的示例,介绍如何快速定位问题、监控服务器性能。 无论你是编程新手还是有一定经验的开发者,理解和掌握这些命令,都将在你的工作中大放异…...
不可复制网站上的文字——2种方法
禁用javascript或Console控制台代码 (1)F12键——设置——勾选禁用javascript (2)Console控制台敲如下代码: var allowPaste function(e){ e.stopImmediatePropagation(); return true; }; document.addEventListe…...
Ubuntu 22.04上编译安装c++ spdlog library
Very fast, header-only/compiled, C logging library. 请以root身份或sudo执行。 1. 安装必需的依赖项: sudo apt-get update sudo apt-get install git g cmake 2. 克隆 spdlog 仓库: cd /opt git clone https://github.com/gabime/spdlog.git …...
ESP32代码开发入门
ESP-IDF ESP-ADF开发 开发概要 编译环境及SDK搭建 整个开发流程是:下载ESP-IDF, ESP-ADF(按需下载),并安装, 编写hello world工程,编译并烧录到主板验证 可参照ESP32 esp-idf esp-adf环境安装及.a库创建与编译api大部分可以用glibc的接口 做了封装,时间time(NULL), 创建线程p…...
“势”是“态”的偶然性减少
“态势感知”中的“势”指的是一种趋势或倾向性,而“态”则表示状态或局势。这个术语常用于描述在一段时间内系统或事件显示出来的方向性变化或发展趋势。因此,可以将“态势”理解为系统或事件状态变化的趋势,这种变化通常反映出偶然性减少的…...
人脑计算机技术与Neuroplatform:未来计算的革命性进展
引言 想象一下,你在某个清晨醒来,准备开始一天的工作,而实际上你的大脑正作为一台生物计算机的核心,处理着大量复杂的信息。这并非科幻电影的情节,而是人脑计算机技术即将带来的现实。本文将深入探讨FinalSpark公司的…...
新版周易测算系统源码 去授权完美运行
已经去掉授权可以完美运行 更新了三个模板市面上都是几千几千的卖 更新了三套首页新ui 自己后台切换就行 源码大小:338M 源码下载:https://download.csdn.net/download/m0_66047725/89447857 更多资源下载:关注我....
【PYTHON】力扣刷题笔记 -- 0053. 最大子数组和【中等】
题目描述:给你一个整数数组 array: nums ,请你找出一个具有最大和的连续子数组 sub-array,返回其最大和 子数组(最少包含一个元素): 是数组中的一个连续部分 示例 1: 输入:nums [-2,1,-3,4,-1…...
Linux启动elasticsearch,提示权限不够
Linux启动elasticsearch,提示权限不够,如下图所示: 解决办法: 设置文件所有者,即使用户由权限访问文件 sudo chown -R 用户名[:新组] ./elasticsearch-8.10.4 //切换到elasticsearch-8.10.4目录同级 chown详细格式…...
css 布局出现无法去除的空白
案件介绍:在没有设置任何的css样式的情况下 文字顶部出现无法去除的空白 源代码 <div click"onClick" ><div class"tableTextButton--container"></div><Icon v-if"loading || thisLoading" type"ios-lo…...
使用SpringBoot整合filter
SpringBoot整合filter,和整合servlet类似,也有两种玩儿法 1、创建一个SpringBoot工程,在工程中创建一个filter过滤器,然后用注解WebFilter配置拦截的映射 2、启动类还是使用ServletComponentScan注解来扫描拦截器注解WebFilter 另…...
Python酷库之旅-第三方库openpyxl(15)
目录 一、 openpyxl库的由来 1、背景 2、起源 3、发展 4、特点 4-1、支持.xlsx格式 4-2、读写Excel文件 4-3、操作单元格 4-4、创建和修改工作表 4-5、样式设置 4-6、图表和公式 4-7、支持数字和日期格式 二、openpyxl库的优缺点 1、优点 1-1、支持现代Excel格式…...
葡萄串目标检测YoloV8——从Pytorch模型训练到C++部署
文章目录 软硬件准备数据准备数据处理脚本模型训练模型部署数据分享软硬件准备 训练端 PytorchultralyticsNvidia 3080Ti部署端 fastdeployonnxruntime数据准备 用labelimg进行数据标注 数据处理脚本 xml2yolo import os import glob import xml.etree.ElementTree as ETxm…...
OpenAI推出自我改进AI- CriticGPT
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
springboot系列七: Lombok注解,Spring Initializr,yaml语法
老韩学生 LombokLombok介绍Lombok常用注解Lombok应用实例代码实现idea安装lombok插件 Spring InitializrSpring Initializr介绍Spring Initializr使用演示需求说明方式1: IDEA创建方式2: start.spring.io创建 注意事项和说明 yaml语法yaml介绍使用文档yaml基本语法数据类型字面…...
专访ATFX首席战略官Drew Niv:以科技创新引领企业高速发展
在金融科技创新的浪潮中,人才是推动企业高速发展的核心驱动力,优质服务是引领企业急速前行的灯塔。作为差价合约领域的知名品牌,ATFX高度重视人才引进工作,秉持“聚天下英才而用之”的理念,在全球范围内广揽科技精英&a…...
关于FPGA对 DDR4 (MT40A256M16)的读写控制 4
关于FPGA对 DDR4 (MT40A256M16)的读写控制 4 语言 :Verilg HDL 、VHDL EDA工具:ISE、Vivado、Quartus II 关于FPGA对 DDR4 (MT40A256M16)的读写控制 4一、引言二、DDR4 SDRAM设备中模式寄存器重要的模式寄存…...
VOOHU 沃虎电子 千兆PoE+集成式RJ45连接器 SYT411Q199DB2A1DP 内置网络变压器 支持720mA供电 适用于PoE交换机与无线AP
苏州沃虎电子科技有限公司(品牌:VOOHU)供应的 SYT411Q199DB2A1DP 是一款高性能千兆集成式RJ45连接器,内置符合IEEE 802.3at标准的网络变压器,支持PoE(高达720mA)供电。该产品采用90侧插DIP封装&…...
开源压枪系统:基于像素识别技术的后坐力补偿解决方案
开源压枪系统:基于像素识别技术的后坐力补偿解决方案 【免费下载链接】Apex-NoRecoil-2021 Scripts to reduce recoil for Apex Legends. (auto weapon detection, support multiple resolutions) 项目地址: https://gitcode.com/gh_mirrors/ap/Apex-NoRecoil-202…...
ConcurrentHashMap讲解
在 Java 并发编程中,ConcurrentHashMap 是高频使用的线程安全 Map 实现,也是面试中几乎必问的核心知识点。它完美解决了 HashMap 线程不安全、Hashtable 性能极差的痛点,在高并发场景下实现了安全与性能的平衡。本文将从设计背景、JDK1.7/JDK…...
HackTricks数字取证方法论:内存转储分析与恶意软件检测完全指南
HackTricks数字取证方法论:内存转储分析与恶意软件检测完全指南 【免费下载链接】hacktricks Welcome to the page where you will find each trick/technique/whatever I have learnt in CTFs, real life apps, and reading researches and news. 项目地址: http…...
从零推导贝尔曼方程:强化学习中的价值函数与策略优化
1. 强化学习中的价值函数基础 想象你正在玩一个迷宫游戏,每走一步都会消耗体力,找到出口能获得大奖。这时候你会想:**"从当前位置出发,最终能获得多少奖励?"这个问题的答案就是价值函数(Value Fu…...
KindEditor富文本编辑器:轻量级网页内容创作解决方案
KindEditor富文本编辑器:轻量级网页内容创作解决方案 【免费下载链接】kindeditor WYSIWYG HTML editor 项目地址: https://gitcode.com/gh_mirrors/ki/kindeditor 在当今Web开发中,内容编辑功能是许多网站的核心需求,但开发者常常面临…...
Jupyter Notebook快速入门:从安装到高效编码
1. 为什么你需要Jupyter Notebook? 第一次听说Jupyter Notebook时,我也觉得这不过是个普通的代码编辑器。直到真正用起来才发现,它完全改变了我的编程工作流。想象一下,你正在写一个数据分析脚本,传统方式需要反复运行…...
树莓派4B接口全解析:从HDMI到GPIO,新手必看的使用指南
树莓派4B接口全解析:从HDMI到GPIO的实战指南 第一次拿到树莓派4B时,那块巴掌大的电路板上密密麻麻的接口总让人望而生畏——哪个口接显示器?哪些针脚能控制LED?电源到底要多少伏?这些问题困扰过每个初学者。作为全球最…...
RuView:无摄像头环境下人体姿态追踪的创新方法探索
RuView:无摄像头环境下人体姿态追踪的创新方法探索 【免费下载链接】RuView Production-ready implementation of InvisPose - a revolutionary WiFi-based dense human pose estimation system that enables real-time full-body tracking through walls using com…...
探索CLIP-ViT-H-14:5大突破重新定义多模态AI应用
探索CLIP-ViT-H-14:5大突破重新定义多模态AI应用 【免费下载链接】CLIP-ViT-H-14-laion2B-s32B-b79K 项目地址: https://ai.gitcode.com/hf_mirrors/laion/CLIP-ViT-H-14-laion2B-s32B-b79K 你是否想过让计算机像人类一样同时理解图像和文字?CLI…...
