了解一个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

next_permitation的更多相关文章

  1. 错排公式 全排列函数 next_permitation(a,a+n)

    不容易系列之一 错排:3件东西分别装进3个不同的特定的袋子,如果刚好一个都没有装对,就叫做错排! 大家常常感慨,要做好一件事情真的不容易,确实,失败比成功容易多了! 做好“一件”事情尚且不易,若想永远 ...

随机推荐

  1. 数组声明的几种方式以及length属性

    声明一: int[] arr=new int[10]; for(int i=0;i<arr.length;i++){ arr[i]=i; } 声明二: int[] arr2={1,2,3}; 声 ...

  2. 201 Bitwise AND of Numbers Range 数字范围按位与

    给定范围 [m,n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含m, n两端点).例如,给定范围 [5,7],您应该返回 4. 详见 ...

  3. suricata.yaml (一款高性能的网络IDS、IPS和网络安全监控引擎)默认配置文件(图文详解)

    不多说,直接上干货! 前期博客 基于CentOS6.5下Suricata(一款高性能的网络IDS.IPS和网络安全监控引擎)的搭建(图文详解)(博主推荐) 或者 基于Ubuntu14.04下Suric ...

  4. 教你如何在实战项目中使用WCF

    我们都知道调用WCF直接在Service References中引用可以远程调用的WCF Url就行了. 但是我们想过没,在Development环境中可以这样做,但是QA.UAT.Productio ...

  5. @ComponentScan、@EnableFeignClients和@MapperScan注解笔记

    @ComponentScan:此注解是用来管理容器中的bean,即是管理项目中类的依赖关系, 注意此注解并不创建类的实例: 默认情况下此注解扫描本工程下的所有包,                    ...

  6. poj2886 Who Gets the Most Candies?

    思路: 先打反素数表,即可确定因子最多的那个数.然后模拟踢人的过程确定对应的人名.模拟的过程使用线段树优化加速. 实现: #include <cstdio> #include <cs ...

  7. P1478 陶陶摘苹果(升级版)

    题目描述 又是一年秋季时,陶陶家的苹果树结了n个果子.陶陶又跑去摘苹果,这次她有一个a公分的椅子.当他手够不着时,他会站到椅子上再试试. 这次与NOIp2005普及组第一题不同的是:陶陶之前搬凳子,力 ...

  8. 前端css3样式前缀自动补全工具--autoprefixer

    最近在学习一份来自git的动画框架源码,看懂70%的核心代码后,打算自己动手实践一版,然鹅,所有框架搭起来以后,在动画这块却出了问题: 想设计一个slideInLeft的动画,必然想到了要从偏移-10 ...

  9. Android 使用pl.droidsonroids.gif.GifImageView在安卓中显示动图遇到的问题

    在做一款聊天软件,其中聊天界面需要发送表情,而表情都是动图,在安卓中想要显示动图,就要借助第三方框架,我选的是pl.droidsonroids.gif.GifImageView. 使用方法如下:你在g ...

  10. PMP项目管理学习笔记(2)——组织、约束和干系人

    (一)组织 这里所说的组织,就是我们所说的团队组织架构. 1.组织的类型 职能型: 在这种组织中,项目团队成员总是向职能经理报告,所有事务都有职能经理全权负责. 项目经理的决策需要与职能经理确认. 项 ...