题意: 给你某个排列 求从下一个排列开始的第k个排列
如果是最后一个排列 则下一个排列为1 2 3 ... n
// 1 用stl 里面的 next_permutation
// 2 用生成下一个排列算法
// 1)从末尾开始找第一个正序 A[i-1]
// 2)从i开始找最大的j A[j]>A[i-1]
// 3)交换 A[i-1],A[j]
// 4)将下标从i开始的序列翻转
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
int s[2000];
int n,k;
void change(int l,int r)
{
while(l
{
swap(s[l],s[r]);
l++;
r--;
}
}
int main()
{
int T;
int i;
scanf("%d",&T);
while(T--)
{
scanf("%d %d",&n,&k);
for(i=0;i
scanf("%d",&s[i]);
while(k--) next_permutation(s,s+n);
for(i=0;i
printf("%d ",s[i]);
printf("%d\n",s[i]);
}
return 0;
}
/* 2
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
int s[2000];
int n,k;
void change(int l,int r)
{
while(l
{
swap(s[l],s[r]);
l++;
r--;
}
}
bool permutation()
{
int i=n-1;
while(i>0&&s[i-1]>=s[i]) i--;
if(!i) return false;
int k=i,j=n-1;
for(;j>i;j--)
if(s[j]>s[i-1]){
k=j;
break;
}
swap(s[i-1],s[k]);
change(i,n-1);
return true;
}
int main()
{
int T;
int i;
scanf("%d",&T);
while(T--)
{
scanf("%d %d",&n,&k);
for(i=0;i
scanf("%d",&s[i]);
while(k--)
{
if(!permutation())
change(0,n-1);
}
for(i=0;i
printf("%d ",s[i]);
printf("%d\n",s[i]);
}
return 0;
}
*/
poj 1833 排列 STL 全排列公式
排列 Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 15173 Accepted: 6148 Description 题 ...
POJ 1833 排列【STL/next_permutation】
题目描述: 大家知道,给出正整数n,则1到n这n个数可以构成n!种排列,把这些排列按照从小到大的顺序(字典顺序)列出,如n=3时,列出1 2 3,1 3 2,2 1 3,2 3 1,3 1 2,3 2 ...
POJ 1833 生成排列
题目链接:POJ 1833 /************************************ * author : Grant Yuan * time : 2014/10/19 16:38 ...
poj 1833
http://poj.org/problem?id=1833 next_permutation这个函数是用来全排列的,按字典的序进行排列,当排列无后继的最大值时,会执行字典升序排列,相当于排序: 当排 ...
POJ 1833 排序
http://poj.org/problem?id=1833 题意: 给出一个排序,求出它之后的第k个排序. 思路: 排序原理: 1.如果全部为逆序时,说明已经全部排完了,此时回到1~n的排序. 2. ...
POJ 题目分类(转载)
Log 2016-3-21 网上找的POJ分类,来源已经不清楚了.百度能百度到一大把.贴一份在博客上,鞭策自己刷题,不能偷懒!! 初期: 一.基本算法: (1)枚举. (poj1753,poj2965 ...
(转)POJ题目分类
初期:一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. ...
poj分类
初期: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. ( ...
poj 题目分类(1)
poj 题目分类 按照ac的代码长度分类(主要参考最短代码和自己写的代码) 短代码:0.01K--0.50K:中短代码:0.51K--1.00K:中等代码量:1.01K--2.00K:长代码:2.01 ...
随机推荐
Invalid layout param in a LinarLayout: layout_weight
android:layout_weight只适用于线性布局LinearLayout,不适用于相对布局RelativeLayout.
BZOJ 2733 &; splay的合并
题意: 带权联通块,添边与查询联通块中第k大. SOL: splay合并+并查集. 我以为splay可以用奇技淫巧来简单合并...调了一下午终于幡然醒悟...于是就只好一个一个慢慢插...什么启发式合 ...
清除VS2012生成的不必要文件
VS2012生成的项目文件中会有一个与解决方案同名的sdf文件,并且比较大,可以删除的,具体方法如下: 英文版步骤如下: Tools->Options->Text Editor->C ...
JAVA虚拟机简介
Java虚拟机定义 Java虚拟机有多层含义 一套规范:Java虚拟机规范.定义概念上Java虚拟机的行为表现 一种实现:例如HotSpot,J9,JRockit.需要实现JVM规范,但具体实现方式不 ...
.net面试题大全(有答案)
在网上找来的,希望对大家有所帮助. 1 (1)面向对象的语言具有__继承性_性._封装性_性._多态性 性. (2)能用foreach遍历访问的对象需要实现 _ IEnumerable 接口或 ...
TP-LINK 路由器怎么设置
TP-LINK 路由器怎么设置... ----------------------- 1.线路连接: 没有使用路由器时,电脑直接连接宽带上网,现在使用路由器共用宽带上网,则需要用路由器来直接连接宽带. ...
cin\cout输入输出控制
输入输出流的控制符 控制符 作 用 dec 设置数值的基数为10 hex 设置数值的基数为16 oct 设置数值的基数为8 setfill(c) 设置填充字符c,c可以是字符常量或字符变量 setpr ...
使用guava变形数据结构
在java日常开发中,经常需要使用各种数据结构,在涉及到数据结构之间如何优雅的转换时,我们可以借助google的guava提供的相关功能来优雅的实现.以下记录一些开发中经常需要使用数据结构的变形,以便 ...
HNOI2019
省选总结 day0 写了下平时不经常写的模板,像什么\(LCT\),圆方树,\(exlucas\)之类的,但是一个都没考. day1 提前十几分钟进了考场,可以提前动电脑,赶紧把\(vimrc\)打了 ...
codeforces#518 Div2 ABCDE
A---Birthday http://codeforces.com/contest/1068/problem/A 题意: 有n种硬币,m个人.m个人要给Ivan送硬币,每个人送的硬币都要互不相同但数 ...