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

DFS--

数字的全排列

#include <bits/stdc++.h>
using namespace std;//最大的排列数目
const int N=10;
int n;
//存储排列的路径
int path[N];
//标记数字是否已经被使用
bool st[N];void dfs(int u){//到达递归边界,输出一个排列if(u==n){//输出循环for(int i=0; i<n; i++){cout<<path[i];}//不写return会继续往下走return;}//生成排列的主循环//遍历每个可能的数for(int i=1; i<=n; i++){//如果当前数字i没有被使用过if(!st[i]){//选择这个数放在当前位置upath[u]=i;//标记这个数已使用st[i]=true;//递归处理下一个位置dfs(u+1);//取消标记(回溯)st[i]=false;}}
}int main(){cin>>n;dfs(0);return 0;
}

语句的执行顺序分析
在这里插入图片描述
两点说明:
①u 的回退是由递归栈的结构自动处理的,不需要显式地进行 u-- 操作。
②等递归函数执行完后(也就是 return 了),程序才会执行st[i]=false;


http://www.mrgr.cn/news/97780.html

相关文章:

  • 【场景应用2】speech_recognition: 微调语音模型
  • 【后端开发】Spring MVC-常见使用、Cookie、Session
  • Hi Robot——大脑加强版的π0:基于「VLM的高层次推理+ VLA低层次任务执行」的复杂指令跟随及交互式反馈
  • C++中STL学习(一)——向量、栈、堆、集合
  • 操作符详解(下)——包含整形提升
  • 第1节:计算机视觉发展简史
  • 系统分析师(二)--操作系统
  • SQLI打靶
  • Pascal VOC 2012 数据集格式与文件结构
  • Python 网络请求利器:requests 包详解与实战
  • 配置与管理代理服务器
  • 解决前后端时区不一致问题
  • Helm核心概念与常见操作介绍
  • VSCode 常用快捷键
  • 神经网络入门—自定义神经网络续集
  • CSRF漏洞技术解析与实战防御指南
  • 【WRF理论第十七期】单向/双向嵌套机制(含namelist.input详细介绍)
  • SAP ABAP 多线程处理/并行处理的四种方式
  • Quill富文本编辑器支持自定义字体(包括新旧两个版本,支持Windings 2字体)
  • 柑橘病虫害图像分类数据集OrangeFruitDaatset-8600