A - Ignatius and the Princess II

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? 

InputThe 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. 
OutputFor 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 译文:
现在我们的英雄发现了BEelzebub feng5166的大门。他打开门,发现feng5166即将杀死我们美丽的公主。但现在BEelzebub必须首先击败我们的英雄。feng5166说:“我有三个问题要问你,如果你能解决这个问题,我会释放公主,否则你也将成为我的晚餐。” 伊格内修斯自信地说:“好吧,最后,我会拯救公主。”

“现在我会告诉你第一个问题。” feng5166说:“给定一个从1到N的序列,我们定义1,2,3 ... N-1,N是可以由1到N组成的所有序列中最小的序列(每个数可以在这个问题中只能使用一次)所以很容易看到第二小的序列是1,2,3 ... N,N-1现在我给你两个数字,N和M。告诉我由第1号到第N号组成的第M个最小序列。很容易,不是吗?哈哈哈哈哈......“ 
你能帮助伊格内修斯解决这个问题吗? 

输入输入包含多个测试用例。每个测试案例由两个数字组成,N和M(1 <= N <= 1000,1 <= M <= 10000)。你可能会认为总是有一个序列满足BEelzebub的需求。输入由文件结尾终止。 
产量对于每个测试用例,您只需输出满足BEelzebub需求的序列。输出序列时,应在两个数字之间打印空格,但不要在最后一个数字后面输出任何空格。 
示例输入
6 4
11 8
示例输出
1 2 3 5 6 4
1 2 3 4 5 6 7 9 8 11 10

STL中的algorithm 的全排列应用

#include<stdio.h>
#include<string.h>
#include<algorithm>
#define INF 0x3f3f3f3f
#define ll long long
#define N 100010
using namespace std;
int a[N];
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)!=EOF)
{
for(int i=;i<=n;i++)
a[i]=i;
int k=;
while(next_permutation(a+,a+n+))//全排列函数
{
k++;
if(k==m)
break;
}
for(int i=;i<n;i++)
printf("%d ",a[i]);
printf("%d\n",a[n]);
}
return ;
}

(上为博客园找的解题代码)

解题的难度在于看不懂题意,没弄懂他需要我求什么,然后就是前段时间对于算法函数algorithm ,数值算法numeric和函数对象functional的理解不够,只是理解了表层的意思,不懂灵活的应用,或者说是没有认真的应用过,经验不足;

#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int N, M, a[];
while (cin >> N >> M)
{
for (int i = ; i < N; i++)
a[i] = i + ;
int mark = ;
while (next_permutation(a,a+N))
{
mark++;
if (mark == M)
break;
}
for (int i = ; i < N-; i++)
cout << a[i] << " ";
cout << a[N - ] <<endl;
}
return ;
}

(附:经过测试,如果不加控制条件用while一直循环,最后的结束next_permutation是的最后情况)

ignitius and princess 2(全排列)的更多相关文章

  1. HDU - 1027 Ignatius and the Princess II 全排列

    Ignatius and the Princess II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K ( ...

  2. HDU_1027_Ignatius and the Princess II_全排列

    Ignatius and the Princess II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K ( ...

  3. poj 1027 Ignatius and the Princess II全排列

    Ignatius and the Princess II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K ( ...

  4. HDU Ignatius and the Princess II 全排列下第K大数

    #include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include& ...

  5. Ignatius and the Princess II(全排列)

    Ignatius and the Princess II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K ( ...

  6. HDU 1027 Ignatius and the Princess II(求第m个全排列)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1027 Ignatius and the Princess II Time Limit: 2000/10 ...

  7. HDU 1027 Ignatius and the Princess II[DFS/全排列函数next_permutation]

    Ignatius and the Princess II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K ( ...

  8. hdu1027 Ignatius and the Princess II (全排列 &amp; STL中的神器)

    转载请注明出处:http://blog.csdn.net/u012860063 题目链接:http://acm.hdu.edu.cn/showproblem.php? pid=1027 Ignatiu ...

  9. (全排列)Ignatius and the Princess II -- HDU -- 1027

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=1027 Ignatius and the Princess II Time Limit: 2000/100 ...

随机推荐

  1. Elasticsearch 5.0 —— Head插件部署指南(Head目前支持5.0了!请不要看本篇文章了)

    使用ES的基本都会使用过head,但是版本升级到5.0后,head插件就不好使了.下面就看看如何在5.0中启动Head插件吧! Head目前支持5.0了!请不要看本篇文章了 Head目前支持5.0了! ...

  2. webpack设置热更新

    首先需要在package.json中配置一个脚本参数 --hot "dev": "webpack-dev-server --mode development --hot& ...

  3. Linux下运行jmeter

    • 我们在做测试的时候,有时候要运行很久,公司用的测试服务器一般都是linux,就可以运行在linux下面,linux下面不能像windows一样有图形化界面,那怎么运行脚本呢,就先在windows上 ...

  4. NPOI 设置样式为粗体

    CellStyle style = hssfworkbook.CreateCellStyle(); Font f = hssfworkbook.CreateFont(); f.Boldweight = ...

  5. mysql 8.0 ~ innodb与变量优化

    一  innodb的优化  1 已完全不支持myisam引擎  2 将自增主键的计数器持久化到redo log中.每次计数器发生改变,都会将其写入到redo log中.如果数据库发生重启,InnoDB ...

  6. java json 转换

    1.直接输出: 2.字符串 通过eval转换输出,里面涉及到一个转义问题,还要注意eval的用法里面需要加"("+ + ")" 3.

  7. linux 文件搜索命令

  8. Builder搭建外置服务器

    如何利用HBuilder快速设置外部web服务器来测试移动web     HBuilder 关于HBuilder工具的简介:HBuilder是DCloud(数字天堂)推出的一款支持HTML5的Web开 ...

  9. SpringBoot单元测试示例2

    package cn.coreqi.security.controller; import org.junit.Before; import org.junit.Test; import org.ju ...

  10. mysql忘记root密码,修改mysql密码

    1.修改mysql配置文件  vim /etc/my.cnf #编辑文件 找到[mysqld],在下面添加一行 skip-grant  :wq #保存退出 service mysqld restart ...