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

算法分析--生成排列

排列简介

  • 全排列,有顺序要求。
  • 递归实现

如何实现

  • 查找第u位置有哪些数字可以用,选择查到的第一个,填上去。
if(u > n){for(int i=1;i<=n;i++)cout<<path[i]<<" ";cout<<endl;
}
  • 再去填写下一个数字。
  • 什么时候不再填写,也就是递归终止了呢?要填写的位置 u >n的时候
for(int i=1;i<=n;i++){if(!state[i]){   // 查找还没用过的数字path[u]=i; // 填上去state[i]=1; dfs(u+1); // 去填写下一个数子state[i]=0; // 撤销我刚刚的选择,在这里填查到的第二个数字,第三个,第四个...}
}

综合代码

#include<iostream>
using namespace std;
int n;
int path[10];
int state[10];
void dfs(int u){if(u>n){for(int i=1;i<=n;i++)cout<<path[i]<<" ";cout<<endl;}for(int i=1;i<=n;i++){if(!state[i]){path[u]=i;state[i]=1;dfs(u+1);state[i]=0;}}
}
int main(){cin>>n;dfs(1);return 0;
}
http://www.hskmm.com/?act=detail&tid=38327

相关文章:

  • 三大安全认证授权协议深度对比:OAuth、OpenID Connect与SAML
  • 数字人公司:数字人新趋势技术驱动与市场前景解析
  • AI股票预测分析报告 - 2025年10月24日
  • 数据绑定相关概念理解
  • 数字人企业:数字人公司排行榜Top 3解析
  • (简记)(自用)线段树区间拆分时间复杂度证明
  • 数字人企业:数字人公司排行榜深度解析
  • 数字人:怎么选择数字人实力公司
  • 拉格朗日插值优化DP
  • 冬日绘板 2026 珂朵莉计划 如何获取 Token
  • 数字人企业:数字人公司技术驱动的三大标杆
  • Linux下的拼音输入法 (2)
  • 数字人平台:重点推荐优质数字人公司
  • SpringBoot整合缓存2-Redis
  • 数字人企业:推荐数字人TOP3公司
  • NOI25D2T2
  • 时钟同步
  • 深入解析:【Java系列课程Java学前须知】第3课 JDK,JVM,JRE的区别和优缺
  • 10.24 CSP-S 模拟37 改题记录
  • 数字人企业:数字人公司重点推荐与选择指南
  • C++实验二
  • 据说每邀请一位朋友加入Comet,您可以获得10刀乐奖励:D
  • 2025.10.24NOIP
  • 小程序 访问第三方网页
  • 王炸!OpenAI 发布 Atlas 浏览器!!
  • 国产开源数据库调研项目的LaTeX专业排版实践
  • Asterix cat-062 ,航班号字段的编码解码
  • AI优化企业:GEO公司技术先驱
  • 题3
  • 课后作业4