Ignatius and the Princess II

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 6362    Accepted Submission(s): 3763

Problem Description
Now our hero finds the door to the BEelzebub feng5166. He opens the door and finds feng5166 is about to kill our pretty Princess. But now the BEelzebub has to beat our hero first. feng5166 says, "I have three question for you, if
you can work them out, I will release the Princess, or you will be my dinner, too." Ignatius says confidently, "OK, at last, I will save the Princess."



"Now I will show you the first problem." feng5166 says, "Given a sequence of number 1 to N, we define that 1,2,3...N-1,N is the smallest sequence among all the sequence which can be composed with number 1 to N(each number can be and should be use only once
in this problem). So it's easy to see the second smallest sequence is 1,2,3...N,N-1. Now I will give you two numbers, N and M. You should tell me the Mth smallest sequence which is composed with number 1 to N. It's easy, isn't is? Hahahahaha......"

Can you help Ignatius to solve this problem?
 
Input
The input contains several test cases. Each test case consists of two numbers, N and M(1<=N<=1000, 1<=M<=10000). You may assume that there is always a sequence satisfied the BEelzebub's demand. The input is terminated by the end of
file.
 
Output
For each test case, you only have to output the sequence satisfied the BEelzebub's demand. When output a sequence, you should print a space between two numbers, but do not output any spaces after the last number.
 
Sample Input
6 4
11 8
 
Sample Output
1 2 3 5 6 4
1 2 3 4 5 6 7 9 8 11 10
 
Author
Ignatius.L
 
Recommend
We have carefully selected several similar problems for you:  1026 1038 1029 1024 1035 

输出1--n第s大的全排列
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int num[1010],vis[1010];
int n,ans;
bool f;
void dfs(int x)
{
if(x==n+1)
{
if(ans>0) ans--;
else
{
f=true;
for(int i=1;i<n;i++)
printf("%d ",num[i]);
printf("%d\n",num[n]);
}
}
if(f) return ;
for(int i=1;i<=n;i++)
{
if(!vis[i])
{
vis[i]=1;
num[x]=i;
dfs(x+1);
vis[i]=0;
}
}
}
int main()
{
while(scanf("%d%d",&n,&ans)!=EOF)
{
ans--;
f=false;
memset(num,0,sizeof(num));
memset(vis,0,sizeof(vis));
dfs(1);
}
return 0;
}

最新文章

  1. SSL/TLS协议运行机制
  2. openjudge7834:分成互质组 解析报告
  3. 【NodeJS 学习笔记03】先运行起来再说
  4. reverse-daily(1)-audio_visual_receiver_code
  5. Could not open INSTALL.LOG file
  6. array_intersect() php筛选两个数组共有的元素
  7. WinForm实现简单的拖拽文件到出题的功能(C#)(3)
  8. Thread.sleep(0)的意义
  9. Linux下tomcat使用
  10. 自己写一个jqery的拖拽插件
  11. Quartz_理解1
  12. KoaHub平台基于Node.js开发的Koa的连接MongoDB插件代码详情
  13. rsync学习笔记
  14. mybatis-ehcache整合中出现的异常 ibatis处理器异常(executor.ExecutorException)解决方法
  15. servlet中常用到的工具
  16. February 11th, 2018 Week 7th Sunday
  17. Redis的学习笔记
  18. odoo10源码win系统开发环境安装图文教程
  19. QT数据类型的转化总结
  20. (Java学习笔记) Java Networking (Java 网络)

热门文章

  1. STL之set篇
  2. linux使用mount命令挂载、umount命令取消挂载
  3. html5——多列布局
  4. HDU_1848_博弈,sg函数
  5. Origin C调用NAG库
  6. Altium Designer 2017 ActiveRoute使用以及其他技巧
  7. Navicat 导出为 Excel 文件
  8. ubuntu14.0开机guest账号禁用方法
  9. Django - 一对多创建
  10. LVM(Logical Volume Manager)逻辑卷管理