next_permitation
了解一个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的更多相关文章
- 错排公式 全排列函数 next_permitation(a,a+n)
不容易系列之一 错排:3件东西分别装进3个不同的特定的袋子,如果刚好一个都没有装对,就叫做错排! 大家常常感慨,要做好一件事情真的不容易,确实,失败比成功容易多了! 做好“一件”事情尚且不易,若想永远 ...
随机推荐
- 未来十年Python的前景会怎样?
转自:一位非常优秀的Python倡导者 作者:alex链接:https://www.zhihu.com/question/22112542/answer/166053516来源:知乎著作权归作者所有. ...
- React Native for Android 学习
前言 Facebook 在2015.9.15发布了 React Native for Android,把 JavaScript 开发技术扩展到了移动Android平台.基于React的React Na ...
- 实现php间隔一段时间执行一次某段代码
<?php ignore_user_abort(); //即使Client断开(如关掉浏览器),PHP脚本也可以继续执行. set_time_limit(0); // 执行时间为无限制,php ...
- IO流的原理和概念
在程序中如何读写文件?不同的编程语言有不同的方式,而 JAVA 则提出了“流”的概念,通过“流”来读写文件 什么是流: 流(Stream)是指一连串的数据(字符或字节),是以先进先出的方式发送信息的通 ...
- c语言-依赖倒转
当一个文件(aa.c文件)依赖于头文件(bb.h)时,如果bb.c编译之后形成的bb.o文件重新编译后,aa.o的文件不需要重新编译 aa.c文件: bb.h文件:对bb.c文件进行声明 bb.c文件 ...
- [转] 一个U盘病毒简单分析
(转自:一个U盘病毒简单分析 - 瑞星网 原文日期:2014.03.25) U盘这个移动存储设备由于体积小.容量大.便于携带等优点,给人们的存储数据带来了很大的便利.但正是由于这种便利,也给病毒有 ...
- IOS 面试题系列
随着iOS平台开发的职位的增加,笔试.面试也越来越有“套路”,这里我总结了一些面试题,多数是Objective-C的基础知识,适合于面试新人,答案是我自己答的,不准确的地方,欢迎指出. 1. Ob ...
- jQuery 首页搜索区域模块随页面滑动而变化
/*搜索区块的颜色变化*/ function search(){ var searchBox = document.querySelector('.m_head'); var bannerBox = ...
- 03HibernateJAVA类与数据库表映射配置
HibernateJAVA类与数据库表映射配置
- Android图像处理之BitMap(2)
Bitmap 相关 1. Bitmap比较特别 因为其不可创建 而只能借助于BitmapFactory 而根据图像来源又可分以下几种情况: * png图片 如:R.drawable.tianjin J ...