题目描述: 
大家知道,给出正整数n,则1到n这n个数可以构成n!种排列,把这些排列按照从小到大的顺序(字典顺序)列出,如n=3时,列出1 2 3,1 3 2,2 1 3,2 3 1,3 1 2,3 2 1六个排列。

任务描述: 
给出某个排列,求出这个排列的下k个排列,如果遇到最后一个排列,则下1排列为第1个排列,即排列1 2 3…n。 
比如:n = 3,k=2 给出排列2 3 1,则它的下1个排列为3 1 2,下2个排列为3 2 1,因此答案为3 2 1。 

Input

第一行是一个正整数m,表示测试数据的个数,下面是m组测试数据,每组测试数据第一行是2个正整数n( 1 <= n < 1024 )和k(1<=k<=64),第二行有n个正整数,是1,2 … n的一个排列。

Output

对于每组输入数据,输出一行,n个数,中间用空格隔开,表示输入排列的下k个排列。

#include<cstdio>      //前N次的代码
#include<algorithm> int main()
{
int m,n,k;
scanf("%d",&m);
while(m--)
{
int a[],j=;
scanf("%d%d",&n,&k); while(n--)
{
scanf("%d",&a[j++]);
}
while(k--)
{ std::next_permutation(a,a+j); }
for(int i=;i<j;i++)
{
printf("%d ",a[i]);
}
printf("\n"); } return ;
}
#include<cstdio>     //以为调函数耽误时间,我就手写了一个
#include<iostream> //结果还是超时 55555
#include<algorithm>
using namespace std;
int aa[],j;
int comp(const void*a,const void*b)
{
return *(int*)a-*(int*)b;
}
inline void perm(int *aa)
{
int t=;
for(int q=j-;q>;q--)
{
if(aa[q]>aa[q-])
{
t=q-;
break;
}
}
int qq, ma=; int y=;
for(int q=t+;q<j;q++)
{
if(ma>aa[q]&&aa[t]<aa[q])
{ma=aa[q];
qq=q;
y=;
} }
if(y){
int r;
r=aa[t];
aa[t]=aa[qq];
aa[qq]=r;
qsort(aa+t+,j-t-,sizeof(int),comp);
}
if(!y)qsort(aa+t,j,sizeof(int),comp);
}
int main()
{
int m,n,k;
scanf("%d",&m);
while(m--)
{ scanf("%d%d",&n,&k); for( j=;j<n;j++)
scanf("%d",&aa[j]); while(k--)
{ perm(aa); }
for(int i=;i<j;i++)
printf("%d ",aa[i]); printf("\n"); } return ;
}
#include<iostream>     //以为大神的能过,源码TLE
using namespace std;
int n,k,step[]; char lock[];
void f(int d)
{
if(d>n)
{ k--; return; }
for(;step[d]<=n;step[d]++)
if(!lock[step[d]])
{
lock[step[d]]=;
f(d+);
lock[step[d]]=;
if(!k)
return;
}
step[d]=;
}
int main()
{
int i,t;
cin>>t;
while(t--)
{
cin>>n>>k;
memset(lock,,sizeof(lock));
for(i=;i<=n;i++)
scanf("%d",&step[i]);
k++;
while(k)
f();
for(i=;i<=n;i++)
printf("%d ",step[i]);
cout<<endl;
}
return ;
}

1833 深坑 TLE 求解的更多相关文章

  1. 在Web API中使用Swagger-UI开源组件(一个深坑的解决)

    介绍: Swagger-Ui是一个非常棒的Web API说明帮助页,具体详情可自行Google和百度. 官网:http://swagger.io/    GitHub地址:https://github ...

  2. 拒绝深坑!记录找了多半天时间的C++编译失败的错误

    采用新的源码,和原来的服务改动也不是很大,但是拒绝深坑啊,找了半天以为是源码的问题,结果倒好原来是环境的问题,还是要感谢一个神一样的人物的帮助 编译的时候一直出现undefined reference ...

  3. android MultiDex multidex原理原理下遇见的N个深坑(二)

    android MultiDex 原理下遇见的N个深坑(二) 这是在一个论坛看到的问题,其实你不知道MultiDex到底有多坑. 不了解的可以先看上篇文章:android MultiDex multi ...

  4. 2、使用Angular-CLI初始化Angular项目(踩过的深坑!!!)

    1.step1:建一个放项目的文件夹,打开cmd,或vs code的终端,找到文件夹根目录 2.step2:初始化脚手架 初始化命令: ng new 项目名称 --skip-install 注意:-- ...

  5. Go语言第一深坑:interface 与 nil 的比较

    interface简介 Go 语言以简单易上手而著称,它的语法非常简单,熟悉 C++,Java 的开发者只需要很短的时间就可以掌握 Go 语言的基本用法. interface 是 Go 语言里所提供的 ...

  6. 【Unity笔记】Terrain地形制作坍塌/深坑

    Unity的Terrain组件在[set the terrain height]分页下,height高度为0时,可理解为该地形的海平面高度,此时就不能地形下榻.把height调到100,点击[flat ...

  7. vue经验 - 那些自己给自己挖的深坑

    深坑场景:vue-异步请求数据,数据还没回来,页面却如饥似渴的准备好了的尴尬场景:问题原因和解决如下: 1.先说vuex中的store,一开始我为了偷懒是这么设置的,如下图: 然后我到了组件中直接这么 ...

  8. 这个PHP无解深坑,你能解出来吗?(听说能解出来的都很秀)

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由horstxu发表于云+社区专栏 1. 问题背景 PHP Laravel框架中的db migration是比较常用的一个功能了.在每个 ...

  9. golang深坑记录

    go深坑:1.gin.context.JSON,如果没有make数组时,数组返回为null,make后,数组为[]2.json.Number转int64类型 datatemp.(json.Number ...

随机推荐

  1. spring的Profile使用对比和应用场景分析

    spring中存在这样一个功能,通过Profile来选择不同环境下的不同配置,说白了,就是通过设置一个参数来选择使用不同的数据,这个数据可能是一个bean,可能是一个xml文件,也有可能是一个prop ...

  2. Eviews 9.0新版本新功能——预测(Auto-ARIMA预测、VAR预测)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 9.预测功能 新增需要方法的预测功能:Auto ...

  3. php 递归无线级别分类

    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <?ph ...

  4. asp.net URL重新实例

    void Application_Start(object sender, EventArgs e) { // 在应用程序启动时运行的代码 RegisterRoutes(); } // 页面存放目录 ...

  5. 小白进阶之Scrapy(基于Scrapy-Redis的分布式以及cookies池)

    首先我们更新一下scrapy版本.最新版为1.3 再说一遍Windows的小伙伴儿 pip是装不上Scrapy的.推荐使用anaconda .不然还是老老实实用Linux吧. conda instal ...

  6. 转:SQL进阶之变量、事务、存储过程与触发器

    一.变量那点事儿 1.1 局部变量 (1)声明局部变量 DECLARE @变量名 数据类型 DECLARE @name varchar(20) DECLARE @id int (2)为变量赋值 SET ...

  7. Struts2【拦截器】就是这么简单

    什么是拦截器 拦截器Interceptor.....拦截器是Struts的概念,它与过滤器是类似的...可以近似于看作是过滤器 为什么我们要使用拦截器 前面在介绍Struts的时候已经讲解过了,Str ...

  8. 零基础新手学习Java必须知道的市场行情

    Java如今的市场不如从前,竞争很大,工资非常高,标准非常高,想要胜任一份高薪的工作不是那么容易,只有掌握最新的行情才能更好的了解Java,才能更好的在这个领取发展,让新手小白了解Java市场行情如下 ...

  9. windows保留关键字全

    alert 警告 all全部 anchor锚 anchors下锚:集合 area地区 assign 分配指派 blur失去焦点 button按钮 checkbox多选按钮 clearInterval用 ...

  10. 【BZOJ5093】图的价值(第二类斯特林数,组合数学,NTT)

    [BZOJ5093]图的价值(第二类斯特林数,组合数学,NTT) 题面 BZOJ 题解 单独考虑每一个点的贡献: 因为不知道它连了几条边,所以枚举一下 \[\sum_{i=0}^{n-1}C_{n-1 ...