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

【排列问题】

问题:

已知某序列有n个元素,请编写程序打印出包含该序列所有元素的所有排列。

输入要求: 输入第1行为整数n,表示该序列元素的个数;第2行为n个整数,表示需要排列的序列元素。 

输出要求:输出若干行,每一行为包含序列所有元素的一种排列。

思路:

兄弟结点不重复,父子关系可重复

代码(中间的错误代码,但无法理解输出的产生):

#include<bits/stdc++.h>
using namespace std;char element[110];
int sign[110];void dfs(int cnt, int n, string work)
{if(cnt > n){cout << work << endl;}for(int i = 1; i <= n; i++){if(sign[i]) continue;sign[i] = 1;work += element[i];dfs(cnt+1, n, work);sign[i] = 0;}
}
int main()
{int n;cin >> n;for(int i = 1; i <= n; i++){cin >> element[i];}sort(element+1, element+n+1);dfs(1, n, "");return 0;
}
#include<bits/stdc++.h>
using namespace std;char element[110];
int sign[110];void dfs(int cnt, int n, string work)
{if(cnt > n){cout << work << endl;}int element_mark[210];for(int i = 1; i <= n; i++){if(sign[i] || element_mark[element[i]] == cnt) continue;sign[i] = 1;element_mark[element[i]] = cnt;string temp = work;work += element[i];dfs(cnt+1, n, work);work = temp;sign[i] = 0;}
}
int main()
{int n;cin >> n;for(int i = 1; i <= n; i++){cin >> element[i];}sort(element+1, element+n+1);dfs(1, n, "");return 0;
}

正确代码:

#include<bits/stdc++.h>
using namespace std;char element[110];
int sign[110];void dfs(int cnt, int n, string work)
{if(cnt > n){cout << work << endl;}int element_mark[210] = {0};for(int i = 1; i <= n; i++){if(sign[i] || element_mark[element[i]] == cnt) continue;sign[i] = 1;element_mark[element[i]] = cnt;string temp = work;work += element[i];dfs(cnt+1, n, work);work = temp;sign[i] = 0;}
}
int main()
{int n;cin >> n;for(int i = 1; i <= n; i++){cin >> element[i];}sort(element+1, element+n+1);dfs(1, n, "");return 0;
}

感想:

要用解空间树来思考约束,要用搜索空间树来修改约束

相关文章:

【排列问题】

问题&#xff1a; 已知某序列有n个元素&#xff0c;请编写程序打印出包含该序列所有元素的所有排列。 输入要求&#xff1a; 输入第1行为整数n&#xff0c;表示该序列元素的个数&#xff1b;第2行为n个整数&#xff0c;表示需要排列的序列元素。 输出要求&#xff1a;输出若…...

token 无感刷新

什么是 token 无感刷新&#xff1f;为什么需要 token 无感刷新&#xff1f;让我们想象一下有这么个场景&#xff1a;你登录一个系统成功后&#xff0c;玩了 10 分钟&#xff0c;发现登录失效了&#xff0c;又要你重新登录&#xff0c;然后又过 10 分钟&#xff0c;又失效了&…...

Netty SSL双向验证

Netty SSL双向验证 1. 环境说明2. 生成证书2.1. 创建根证书 密钥证书2.2. 生成请求证书密钥2.3. 生成csr请求证书2.4. ca证书对server.csr、client.csr签发生成x509证书2.5. 请求证书PKCS#8编码2.6. 输出文件 3. Java代码3.1. Server端3.2. Client端3.3. 证书存放 4. 运行效果4…...

4.nginx反向代理、负载均衡

nginx反向代理、负载均衡 一、反向代理1、语法2、注意事项3、后端服务器记录客户端真实IP3.1 在nginx反向代理时添加x-real-ip字段3.2 后端httpd修改combined日志格式3.3 后端是nginx的情况 二、负载均衡 upstream模块1、负载均衡作用2、调度算法3、配置应用 一、反向代理 隐藏…...

浅谈申请小程序地理位置权限的正确打开方式

小程序地理位置接口有什么功能&#xff1f; 这篇内容会教大家如何快速申请“获取当前的地理位置&#xff08;onLocationChange&#xff09;”接口&#xff0c;以便帮助大家顺利开通接口。以下内容是本人经历了多次的申请经历得出来的经验&#xff0c;来之不易&#xff0c;望大家…...

make modules 和 make modules_install

1. make modules 如&#xff1a;make ARCHarm64 CROSS_COMPILEaarch64-linux-gnu- modules 直接make&#xff0c;不加任何参数&#xff0c;就是make all&#xff0c;包含make modules。 make modules是单独编译模块&#xff0c;驱动被配置成M的都是modules&#xff0c;modul…...

docker 安装mysql,redis,rabbitmq

文章目录 docker 安装ngnix&#xff0c;mysql,redis,rabbitmq安装docker1.安装下载docker-ce源命令2.安装docker3.查看版本4.查看docker状态5.启动docker6.测试安装ngnix 安装mysql8.0.361.拉取mysql镜像2.安装mysql8 安装redis1.拉取redis7.0.11镜像2.安装redis3.进入容器内部…...

Windows配置java环境JDK

配置jdk环境非常简单&#xff0c;大概有以下几步&#xff1a; 下载jdk安装&#xff0c;然后双击进行安装配置环境变量(也不是一定非要配置环境变量&#xff0c;配置环境变量的好处就是&#xff0c;在任何位置&#xff0c;系统都可以找到安装路径&#xff0c;非常实用且方便) …...

英伟达驱动重装教程

离线安装NVIDIA驱动程序通常涉及下载驱动程序安装包并手动执行安装步骤。以下是详细步骤: 1. 下载NVIDIA驱动程序 首先,你需要在有网络连接的计算机上下载适合你系统的NVIDIA驱动程序安装包。可以从NVIDIA官方驱动下载页面下载。 选择你的GPU型号和操作系统,然后下载相应…...

【蓝桥杯嵌入式】 第六届国赛

目录 题目 配置 注意事项 代码 - 默写大师 EEPROM读写函数 LED驱动函数 ADC采集 上电初始化 LCD 按键 PWM互补输出 全部代码 hardware.c hardware.h control.c control.h main.c 题目 配置 注意事项 复制LCD的工程&#xff0c;先配置资源 --- 勾选完选项一…...

图片裁剪与上传处理方案 —— 基于阿里云 OSS 处理用户资料

目录 01: 通用组件&#xff1a;input 构建方案分析 02: 通用组件&#xff1a;input 构建方案 03: 构建用户资料基础样式 04: 用户基本资料修改方案 05: 处理不保存时的同步问题 06: 头像修改方案流程分析 07: 通用组件&#xff1a;Dialog 构建方案分析 08: 通用组件&…...

迷你主机Esxi 6.7挂载新硬盘

背景 硬件&#xff1a;零刻SER Pro 6 系统&#xff1a;vmware Exsi 6.7.0 Update 3 现有的硬盘槽位占满了&#xff0c;但空间不够用&#xff0c;想要通过USB外接移动硬盘来进行扩容。使用了一块250G的硬盘做测试。 步骤 TL;DR # 停止usbarbitrator服务 /etc/init.d/usbarbi…...

解决VSCode右键没有Open In Default Browser问题

在VSCode进行Web小程序测试时&#xff0c;我们在新建的HTML文件中输入 !会自动生成页面代码骨架&#xff0c;写入内容后&#xff0c;我们想要右键在浏览器中预览。发现右键没有“Open In Default Browser”选项。原因是没有安装插件。 下面是解决方案&#xff1a;首先在VSCode找…...

httpsok-v1.12.0支持LB证书自动部署

&#x1f525;httpsok-v1.12.0支持LB证书自动部署 介绍 httpsok 是一个便捷的 HTTPS 证书自动续签工具&#xff0c;基于全新的设计理念&#xff0c;专为 Nginx 、OpenResty 服务器设计。已服务众多中小企业&#xff0c;稳定、安全、可靠。 一行命令&#xff0c;一分钟轻松搞…...

基于Pytorch框架的深度学习EfficientNetV2神经网络中草药识别分类系统源码

第一步&#xff1a;准备数据 5种中草药数据&#xff1a;self.class_indict ["百合", "党参", "山魈", "枸杞", "槐花", "金银花"] &#xff0c;总共有900张图片&#xff0c;每个文件夹单独放一种数据 第二步&a…...

网络协议。

一、流程案例 接下来揭秘我要说的大事情&#xff0c;“双十一”。这和我们要讲的网络协议有什么关系呢&#xff1f; 在经济学领域&#xff0c;有个伦纳德里德&#xff08;Leonard E. Read&#xff09;创作的《铅笔的故事》。这个故事通过一个铅笔的诞生过程&#xff0c;来讲述…...

Excel单元格格式无法修改的原因与解决方法

Excel单元格格式无法更改可能由多种原因造成。以下是一些可能的原因及相应的解决方法&#xff1a; 单元格或工作表被保护&#xff1a; 如果单元格或工作表被设置为只读或保护状态&#xff0c;您将无法更改其中的格式。解决方法&#xff1a;取消单元格或工作表的保护。在Excel中…...

CasaOS玩客云安装全平台高速下载器Gopeed并实现远程访问

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

JAVA学习-练习试用Java实现“最长回文子串”

问题&#xff1a; 给定一个字符串 s&#xff0c;找到 s 中最长的回文子串。 示例 1&#xff1a; 输入&#xff1a;s "babad" 输出&#xff1a;"bab" 解释&#xff1a;"aba" 同样是符合题意的答案。 示例 2&#xff1a; 输入&#xff1a;s …...

深入探索Qt框架系列之信号槽原理(三)

前面两篇分别介绍了QObject::connect和QMetaObject::Connection&#xff0c;那么信号槽机制的基础已经介绍完了&#xff0c;本文将介绍信号槽机制是如何从信号到槽的&#xff0c;以及多线程下是如何工作的。 信号槽机制源码解析 1. 信号的触发 以该系列的第一篇文章中的示例举…...

如何用4个步骤构建你的开源六轴机械臂:完整DIY指南

如何用4个步骤构建你的开源六轴机械臂&#xff1a;完整DIY指南 【免费下载链接】Faze4-Robotic-arm All files for 6 axis robot arm with cycloidal gearboxes . 项目地址: https://gitcode.com/gh_mirrors/fa/Faze4-Robotic-arm Faze4-Robotic-arm是一个开源六轴机械臂…...

Clawless框架:构建合规网页数据抓取系统的设计哲学与实践指南

1. 项目概述与核心价值最近在GitHub上闲逛&#xff0c;发现了一个名为“Clawless”的项目&#xff0c;作者是HainanZhao。这个项目名挺有意思&#xff0c;“Clawless”直译是“无爪”&#xff0c;听起来像是一个温和无害的工具。点进去一看&#xff0c;发现它是一个用于自动化处…...

DIY蓝牙游戏手柄:基于Arduino与Cherry MX轴体的全流程制作指南

1. 项目概述与核心思路几年前&#xff0c;我在折腾机械键盘时&#xff0c;看着手边多出来的几颗Cherry MX轴体&#xff0c;突然冒出一个想法&#xff1a;这些清脆、精准的触发单元&#xff0c;除了在键盘上噼里啪啦&#xff0c;能不能变成更直接的操控工具&#xff1f;比如&…...

Odrive多线程架构实战:如何为你的无刷电机项目定制启动流程与状态机

Odrive多线程架构实战&#xff1a;如何为你的无刷电机项目定制启动流程与状态机 在无刷电机控制领域&#xff0c;Odrive凭借其开源特性和强大的性能表现&#xff0c;已成为众多硬件开发者的首选平台。但当你需要将这套系统集成到自己的机器人关节、CNC主轴或无人机推进系统中时…...

别再直接跳转了!用iframe在Vue项目里优雅嵌入第三方页面(附B站实战代码)

在Vue项目中优雅集成第三方页面的完整工程化方案 当我们需要在Vue应用中嵌入外部页面时&#xff0c;直接跳转会破坏应用的整体性和用户体验。本文将分享一套基于iframe的完整解决方案&#xff0c;涵盖从基础实现到高级优化的全流程实践。 1. 为什么选择iframe而非直接跳转 在现…...

基于ReAct框架的AI智能体:如何让LLM通过Google搜索获取实时信息

1. 项目概述&#xff1a;当AI学会“上网冲浪”最近在折腾一个挺有意思的东西&#xff0c;我把它叫做“AI的浏览器”。听起来有点科幻&#xff0c;但核心逻辑很简单&#xff1a;我们如何让一个大型语言模型&#xff08;LLM&#xff09;不再仅仅依赖它训练时“记住”的知识库&…...

Perplexity企业版部署倒计时:仅剩3个关键License配额可申领,附2024Q3企业版SLA服务等级白皮书摘要

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Perplexity企业版核心价值与定位 Perplexity企业版并非通用问答工具的简单升级&#xff0c;而是面向现代数据驱动型组织构建的**可信AI协作者平台**。它深度融合企业知识图谱、权限感知检索与可审计推理…...

JiYuTrainer学习自由解决方案:重新定义课堂自主权的教育技术工具

JiYuTrainer学习自由解决方案&#xff1a;重新定义课堂自主权的教育技术工具 【免费下载链接】JiYuTrainer 极域电子教室防控制软件, StudenMain.exe 破解 项目地址: https://gitcode.com/gh_mirrors/ji/JiYuTrainer 你还记得那种感觉吗&#xff1f;当老师在讲台上演示关…...

Python量化交易框架解析:从数据到实盘的完整实现

1. 项目概述与核心价值最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“ZJHuang915/PythonQuantTrading”。光看名字&#xff0c;很多朋友可能就明白了&#xff0c;这是一个用Python做量化交易的代码仓库。我花了点时间把整个项目翻了一遍&#xff0c;发现它不是一个简单…...

从MobileNetV1到RetinaFace:轻量化主干网络在人脸检测中的架构演进与实践

1. 轻量化主干网络的演进背景与需求 在移动端和嵌入式设备上实现实时人脸检测一直是计算机视觉领域的重要挑战。传统的人脸检测算法如Viola-Jones虽然计算量小&#xff0c;但在复杂场景下的检测精度有限。随着深度学习技术的发展&#xff0c;基于卷积神经网络的人脸检测方法逐渐…...