博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于字典序的若干问题
阅读量:5334 次
发布时间:2019-06-15

本文共 1903 字,大约阅读时间需要 6 分钟。

1.六个数里取所有三个数的全排列按字典序输出

  法一:我记得比赛时我用的是二维数组,每一维先排序,竟然立马水过了,后来我想要是数多了就很麻烦,于是有了下面的方法。

  法二:

1 #include 
2 #include
3 #include
4 using namespace std; 5 6 const int maxn = 25; 7 int n,num; 8 int a[maxn]; 9 bool vis[maxn] = {
false};10 11 void fun(int cnt)12 {13 if(cnt==num)14 {15 cout<
>n>>num;38 fun(0);39 system("pause");40 return 0;41 }

2.求字典序的第k的排列

  参见POJ 1037(不只是简单地求第几个排列),下面的方法都超时(应该是WA)了;参加黑书P257,也可以求1开头的共几个排列,这样逼近,不过若是位数较多,数组开不了

  法一:

1 //超时,求第几个排列  2 #include 
3 #include
4 #include
5 using namespace std; 6 7 const int maxn = 25; 8 int n,k; 9 int a[maxn];10 11 void solve()12 {13 int cnt = 0;14 do15 {16 cnt++;17 if(k==cnt)18 {19 cout<
>T;34 while(T--)35 {36 37 cin>>n>>k;38 for(int i=0; i

  法二:

1 #include 
2 #include
3 #include
4 using namespace std; 5 6 const int maxn = 25; 7 int n,k; 8 int a[maxn]; 9 int cnt = 0;10 11 void solve(int cur)12 {13 if(cur==n)14 {15 cnt++;16 if(cnt==k) 17 {18 cout<
>T;46 while(T--)47 { 48 cnt = 0;49 cin>>n>>k;50 solve(0);51 }52 return 0;53 }

3.求上一个和下一个排列

  一.上一个排列

    普通算法没找到,可以直接prev_permutation()

  二.下一个排列

    a.普通算法

      从最后一位 找到第一个非递减的位数,假设最末尾连续的递减位数为k;例如12354   54是递减的 所以找到3 k=2;然后将这一位与最后一位互换 例如12354 换成12453;那后k位是降序序的 ;所以将最后k位改成升序即可。

    b.

1 #include
2 #include
3 using namespace std; 4 5 int main() 6 { 7 char a[7]="123456"; 8 next_permutation(a,a+6); 9 cout<
<

 

转载于:https://www.cnblogs.com/hxsyl/archive/2013/04/25/3041848.html

你可能感兴趣的文章
egret3D与2D混合开发,画布尺寸不一致的问题
查看>>
freebsd 实现 tab 命令 补全 命令 提示
查看>>
struts1和struts2的区别
查看>>
函数之匿名函数
查看>>
shell习题第16题:查用户
查看>>
Redis常用命令
查看>>
2018.11.06 bzoj1040: [ZJOI2008]骑士(树形dp)
查看>>
2019.02.15 bzoj5210: 最大连通子块和(链分治+ddp)
查看>>
redis cluster 集群资料
查看>>
微软职位内部推荐-Sr. SE - Office incubation
查看>>
微软职位内部推荐-SOFTWARE ENGINEER II
查看>>
centos系统python2.7更新到3.5
查看>>
C#类与结构体究竟谁快——各种函数调用模式速度评测
查看>>
我到底要选择一种什么样的生活方式,度过这一辈子呢:人生自由与职业发展方向(下)...
查看>>
poj 题目分类
查看>>
windows 安装yaml支持和pytest支持等
查看>>
读书笔记:季羡林关于如何做研究学问的心得
查看>>
面向对象的优点
查看>>
套接口和I/O通信
查看>>
阿里巴巴面试之利用两个int值实现读写锁
查看>>