是时候学一波STL了。。。
2015-07-23 11:11
246 查看
都到现在了还不会STL,赶紧学习一下。。。
头文件#include<algorithm>
加上 using namespace std;
求下一个排列的函数:next_permutation(first,last),其中first,last都是指针变量,求的是区间
[first,last)的下一个排列,升序求得,比若说1 2 3 下一个排列是1 3 2,最后一个排列的下一个排列是第
一个,即3 2 1——>1 2 3,据说效率也不怎么样,poj 1833用G++交TLE,C++过了.
如果当前是最后一个排列,则next_permutation(first,last)会返回false。。。
实现原理:
在当前序列中,从尾端往前寻找两个相邻元素,前一个记为*i,后一个记为*ii,并且满足*i < *ii。然后再从尾
端寻找另一个元素*j,如果满足*i < *j,即将第i个元素与第j个元素对调,并将第ii个元素之后(包括ii)的所
有元素颠倒排序,即求出下一个序列了。
prev_permutation(first,last)是求的前一个排列。。。
poj 1833
代码:
poj 1731
例子,用来练手。。。
代码:
头文件#include<algorithm>
加上 using namespace std;
求下一个排列的函数:next_permutation(first,last),其中first,last都是指针变量,求的是区间
[first,last)的下一个排列,升序求得,比若说1 2 3 下一个排列是1 3 2,最后一个排列的下一个排列是第
一个,即3 2 1——>1 2 3,据说效率也不怎么样,poj 1833用G++交TLE,C++过了.
如果当前是最后一个排列,则next_permutation(first,last)会返回false。。。
实现原理:
在当前序列中,从尾端往前寻找两个相邻元素,前一个记为*i,后一个记为*ii,并且满足*i < *ii。然后再从尾
端寻找另一个元素*j,如果满足*i < *j,即将第i个元素与第j个元素对调,并将第ii个元素之后(包括ii)的所
有元素颠倒排序,即求出下一个序列了。
prev_permutation(first,last)是求的前一个排列。。。
poj 1833
代码:
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<algorithm> using namespace std; int a[1025]; int main() { int T,m,n; scanf("%d",&T); while(T--) { scanf("%d%d",&m,&n); for(int i=0; i<m; i++) { scanf("%d",&a[i]); } int *first = a; int *last = a+m; while(n--) { next_permutation(first,last); } for(int i=0; i<m; i++) { printf("%d",a[i]); if(i!=m-1) { printf(" "); } } puts(""); } return 0; }
poj 1731
例子,用来练手。。。
代码:
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<algorithm> using namespace std; int cmp(const void *a,const void *b) { return *(char *)a-*(char *)b; } int main() { char a[205]; scanf("%s",a); int len = strlen(a); qsort(a,len,sizeof(a[0]),cmp); char *sta = a; char *end = a+len; puts(a); while(next_permutation(sta,end)) { puts(a); } return 0; }
相关文章推荐
- maven中自定义可执行jar包的MANIFEST
- AOL/J JDBC连接在EBS中的实现
- UNIX 系统上的文本操作简介
- NYOJ 24 素数距离问题
- ruby on rails调试技术
- [小技巧] 如何获取 gcc 默认的 linker script
- 日经春秋 20150723
- ORA-16014 与 ORA-00312
- 阿里电话面试总结(PHP研发工程师)2015-7-22
- 改变文件的属性和权限
- C++中构造函数、复制构造函数和赋值操作符
- hadoop的权限控制
- hadoop的权限控制
- 【Oracle 集群】Linux下Oracle RAC集群搭建之基本测试与使用(九)
- 辅助类
- php实现图片等比例缩放代码
- 远程服务器文件流下载方法【实例】
- js日期方法
- LinearLayout布局属性难点
- 公开课可下载资源汇总