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

(枚举专题)排列数枚举

和组合数枚举不同的是不需要剪枝,因为数值及其个数已经给定,而且用过的数会用chosen锁住,回溯的时候再解锁并将数值归零。注意这里的order数组和chosen数组的值,order的索引是x的值,chosen数组的索引是循环的i变量。这里也可以创建数组存值调用求排列情况。

#include<bits/stdc++.h>
using namespace std;

int n;
bool chosen[20];//0 1
int order[20];//存储具体的数值 

void calc(int x)
{
	//这里不需要单独剪枝,因为已经给了具体的数值和个数 
	//条件检查 
	if(x-1==n)
	{
		for(int i=1;i<=n;i++)
		{
			cout<<order[i];
		}
		puts(" ");
		return;
	}
	
	//递归 
	for(int i=1;i<=n;i++)
	{
		if(chosen[i])//这里相当于剪枝了 ,用过的数没解放,不能用了 
		continue; 
		order[x]=i;//存值 
		chosen[i]=1; //锁 
		calc(x+1);
		order[x]=0;//归零 
		chosen[i]=0; //解锁 
	}
}



int main()
{
	cin>>n;
	calc(1);
	
	return 0;
 } 

相关文章:

  • C语言零基础入门教程(1)
  • LM Studio 替换源的方式解决huggingface.co无法访问的问题
  • 动态规划填表技巧:固定最后一个数 vs 固定倒数第二个数
  • 6、通过husky规范commit提交信息
  • 多视图几何--结构恢复--三角测量
  • A523 527 pk口控制
  • Linux密码策略
  • 华为OD机试九日集训第1期 - 按算法分类,由易到难,循序渐进,提升编程能力和解题技巧,从而提高机试通过率(Python/JS/C/C++)
  • QQuick3D-Camera的介绍
  • TCP/IP原理详细解析
  • JavaScript 中 this 绑定丢失的陷阱:从 “is not a function“ 错误谈起
  • 处理动态分页:自动翻页与增量数据抓取策略-数据议事厅
  • 网络tcp协议设置,网络tcp协议设置不了
  • Linux笔记之通配符和正则表达式的区别
  • 领星ERP-FBA数据无缝对接用友U8系统的技术实践
  • 目标检测YOLO实战应用案例100讲-基于激光雷达点云的交通场景 三维车辆目标检测与跟踪算法研究(续)
  • windows本地AI知识库解决方案( pageassist + nomic + deepseek-r1:1.5b)
  • 改变 input 自动填充的背景颜色
  • Midjourney绘图参数详解:从基础到高级的全面指南
  • 卫星通信+5G+AI:遨游构建空天地一体化智慧应急通信网络
  • 建设动漫网站的目的/网络营销的营销理念
  • 静态网站开发工具/制作网站要多少费用
  • 网站建设及推广好学习吗/seo网站排名优化工具
  • 个人备案的网站能做什么/怎么卸载windows优化大师
  • 网站 位置导航/搜狗站长平台打不开
  • 网站整体营销方案/百度人工客服在线咨询电话