了解一个C++ STL的函数 next_permitation 可用于生成全排列

如下例子

 #include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std; const int MAX_N = ;
int perm[MAX_N];
int POS[MAX_N];
bool used[MAX_N];
//dfs法求取 (0,1,2,3...n-1)的全排列 n!种 //自己定义的函数
void permutation1(int pos,int n)
{
if (pos == n)
{
for (int i = ; i < n; i++)
{
printf("%d ", POS[i]);
}
putchar('\n');
return ;
}
for (int i = ; i < n; i++)
{
if(!used[i])
{
POS[pos] = i;
used[i] = true;
permutation1(pos+, n);
used[i] = false;//回溯 当不用这个数的时候 取消used
}
}
} //c++提供的next_permutation
//即使有重复元素也会排列
//按照字典序排列 当排序呢完后会返回false
void permutation2(int n)
{
for (int i = ; i < n; i++)
{
perm[i] = i;
}
do
{
for (int i = ; i < n; i++)
{
printf("%d ", perm[i]);
}
printf("\n");
}while (next_permutation(perm, perm+n));
}
int main()
{
int n;
cin >> n;
//permutation1(0,n);//很赞
permutation2(n);
return ;
}
//以上属于特殊状态的枚举 又或者 可以使用位运算 枚举组合数 或者 求集合的子集
//以后提及

只需要打印就行了 其他的都交给permitation(perm, perm+n)

当枚举完毕 返回false

最新文章

  1. PLSQL大数据生成规则
  2. javascript中bind函数的作用
  3. android SurfaceView中播放视频 按视频的原始比例播放
  4. 任意List 和DatabTable的转换
  5. 搬家至个人独立博客virson.cn
  6. C#操作FTP报错,远程服务器返回错误:(550)文件不可用(例如,未找到文件,无法访问文件)的解决方法
  7. Bootstrap页面布局15 - BS带下拉菜单的按钮
  8. [摘录]quarts:Quartz Quick Start Guide
  9. Retina CS强大漏洞检测工具
  10. Android 通用获取Ip的方法(判断手机是否联网的方法)!!!
  11. Clone使用方法详解【转载】
  12. 调用 sphinx-build生成HTML文件
  13. hdu_2955_Robberies(01背包)
  14. PAT (Advanced Level) 1050. String Subtraction (20)
  15. mysql基础篇 - SELECT 语句详解
  16. eclipse项目改为maven项目导致svn无法比较历史数据的解决办法
  17. Apache Traffic Server
  18. Core DES加、解密
  19. mongodb三种存储引擎高并发更新性能专题测试
  20. Python 装饰器实例

热门文章

  1. 每天学点linux命令之locate 与 find 命令
  2. hdu 6011 Lotus and Characters 贪心
  3. asp.net网站接入QQ登录
  4. java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to
  5. VM virtualBox设置无缝全屏
  6. Jquery+ashx实现Ajax
  7. JPA调用存储过程
  8. bat批处理如何删除本地策略里的用户权限分配中的拒绝从网络访问本机项的guest用户?
  9. 使用迅为iTOP-iMX6开发板-uboot-修改默认环境变量
  10. 迅为i.MX6UL核心板ARMCortex-A7单核NXP飞思卡尔工控行业Imx6核心板