近期几次考试的一些题目暴力分都有用到全排列。

全排列是个好东西啊...

回想一下,我们最开始学到全排列是什么时候呢?

大概是学搜索的时候罢...

一、传统搜索算法

想复习可以戳 https://www.luogu.org/problemnew/show/P1706

 #include<iostream>
#include<cstdlib>
#include<cstdio>
#include<iomanip>
using namespace std;
int num=,a[]={},n,r;
bool b[]={};
int search(int);
int print();
int main(){
cin>>n;
search();
cout<<num<<endl;
system("pause");
return ;
}
int search(int k)//k是找第几位数
{ for(int i=;i<=n;i++)
if(!b[i])
{ a[k]=i;
b[i]=;
if(k==n)print();
else search(k+);
b[i]=;}
}
int print()
{ num++;
for(int i=;i<=n;i++)
cout<<a[i];
cout<<endl;
}

二、利用万能的STL<algorithm>模板库

一个函数:next_permutation()

代码就是:

 #include<algorithm>
#include<cstdio>
using namespace std;
int a[]={,,,,,,};
int n;
int main()
{
scanf("%d",&n);
do{
for(int i=;i<n;i++)
{
printf("%d\0",a[i]);
}
printf("\n");
}while(next_permutation(a,a+n));
return ;
}

最新文章

  1. Python学习第一弹——Python环境搭建
  2. GJM : Unity3D 常用网络框架与实战解析 【笔记】
  3. vs合并压缩css,js插件——Bundler &amp; Minifier
  4. mybatis配置文件(其中,注意节点先后顺序)
  5. JS算法总结
  6. 将内表通过TXT文本输出
  7. SQL Server 中 RAISERROR 的用法
  8. hdu 4715 Difference Between Primes(素数筛选+树状数组哈希剪枝)
  9. 关闭MyEclipse的Quick Update
  10. 自己定制Linux发行版(资料)
  11. Android 不通过parent实现样式继承
  12. java 图片 批量 压缩 +所有压缩
  13. thunk技术
  14. NancyFx 2.0的开源框架的使用-Forms
  15. 浅入深出Vue:前言
  16. WINDOWS SERVER 2016 IE使用FLASH PLAYER的方法
  17. scapy基础之一 ----简单命令
  18. java总结:字符串切割
  19. Linux基础实操二
  20. 12.16 Daily Scrum

热门文章

  1. 11-Js类和对象
  2. 全新开始fighting
  3. Eclipse注释模板配置
  4. 我在使用eclipse配置Tomcat服务器的时候发现,默认情况下Tocmat把我们部署的项目放在了workspaces下面,而不是像Myeclipse默认的那样放在tomcat的安装路径下。
  5. zoom to raster resolution
  6. linux迁移至固态硬盘全过程
  7. 盘点UML中的四种关系
  8. springMVC4(16)拦截器解析与登陆拦截模拟
  9. pycharm快捷键和一些常用的设置
  10. 把A表中的a字段和b字段数据 复制到B表中的aa字段和bb字段