求全排列Permutation
2024-08-29 18:35:19
是在教材(《计算机算法设计与分析(第4版)》王晓东 编著)上看见的关于求全排列的算法;
我们可以看一下书上怎么写的:
#include<bits/stdc++.h>
using namespace std;
template<class Type>
void Perm(Type num[],int l,int r)
{
if(l==r)
{
for(int i=;i<=r;i++) cout<<num[i]<<" ";
cout<<endl;
}
else
{
for(int i=l;i<=r;i++)
{
swap(num[l],num[i]);
Perm(num,l+,r);
swap(num[l],num[i]);
}
}
}
int main()
{
int num[]={,,,,,,}; Perm(num,,);
cout<<endl; Perm(num,,);
cout<<endl;
}
看一下运行结果:
显然,这个函数在功能实现上……存在一定的问题(虽然思路上没问题),所以……
我自己重新写了一个,也许以后可能用的到呢:
#include<bits/stdc++.h>
using namespace std;
void Perm(int num[],int st,int ed,int l,int r)//st,ed表示选取的范围; l,r表示进行全排列的范围
{
if(l==r)
{
for(int i=st;i<=ed;i++) cout<<num[i]<<" ";
cout<<endl;
return;
} for(int i=l;i<=r;i++)
{
swap(num[l],num[i]);
Perm(num,st,ed,l+,r);
swap(num[l],num[i]);
}
}
int main()
{
int num[]={,,,,,,}; Perm(num,,,,);
cout<<endl; Perm(num,,,,);
cout<<endl;
}
最新文章
- android知识点随笔
- Android listview addHeaderView 和 addFooterView 详解
- 几种常见语言的命名空间(Namespace)特性
- 【POJ 3320】Jessica&#39;s Reading Problemc(尺取法)
- Kerbose
- PHP之open_ssl
- Spoj 7001 Visible Lattice Points 莫比乌斯,分块
- Tomcat工作原理(转)
- 怎么用notepad配置来运行C语音环境
- something funny
- 1212: [HNOI2004]L语言
- APP在模拟器崩溃,提示__gcd_queue_item_enqueue_hook_block_invoke
- [BZOJ4011][HNOI2015] 落忆枫音(学习笔记) - 拓扑+DP
- OpenGL Shader Key Points (3)
- PHP生成四角图片
- 分页SQL代码
- 使用引用类型变量来访问所引用对象的属性和方法时,Java 虚拟机绑定规则
- python中__name__属性的使用
- PHP Filter函数
- Nginx + Keepalived使用文档
热门文章
- 8 -- 深入使用Spring -- 2...1 搜索Bean类
- 【代码审计】QYKCMS_v4.3.2 任意文件读取漏洞分析
- Linux man 命令
- 深度缓存ZBuffer线性化
- 如何构建日均千万PV Web站点 (一)
- linux clamav杀毒软件的安装
- Android设置横屏竖屏
- windows内核情景分析之—— KeRaiseIrql函数与KeLowerIrql()函数
- redis基本结构
- Delphi 10 Seattle 小票打印控件TQ_Printer