是在教材(《计算机算法设计与分析(第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;
}

最新文章

  1. android知识点随笔
  2. Android listview addHeaderView 和 addFooterView 详解
  3. 几种常见语言的命名空间(Namespace)特性
  4. 【POJ 3320】Jessica&#39;s Reading Problemc(尺取法)
  5. Kerbose
  6. PHP之open_ssl
  7. Spoj 7001 Visible Lattice Points 莫比乌斯,分块
  8. Tomcat工作原理(转)
  9. 怎么用notepad配置来运行C语音环境
  10. something funny
  11. 1212: [HNOI2004]L语言
  12. APP在模拟器崩溃,提示__gcd_queue_item_enqueue_hook_block_invoke
  13. [BZOJ4011][HNOI2015] 落忆枫音(学习笔记) - 拓扑+DP
  14. OpenGL Shader Key Points (3)
  15. PHP生成四角图片
  16. 分页SQL代码
  17. 使用引用类型变量来访问所引用对象的属性和方法时,Java 虚拟机绑定规则
  18. python中__name__属性的使用
  19. PHP Filter函数
  20. Nginx + Keepalived使用文档

热门文章

  1. 8 -- 深入使用Spring -- 2...1 搜索Bean类
  2. 【代码审计】QYKCMS_v4.3.2 任意文件读取漏洞分析
  3. Linux man 命令
  4. 深度缓存ZBuffer线性化
  5. 如何构建日均千万PV Web站点 (一)
  6. linux clamav杀毒软件的安装
  7. Android设置横屏竖屏
  8. windows内核情景分析之—— KeRaiseIrql函数与KeLowerIrql()函数
  9. redis基本结构
  10. Delphi 10 Seattle 小票打印控件TQ_Printer