ignitius and princess 2(全排列)
A - Ignatius and the Princess II
"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 译文:
“现在我会告诉你第一个问题。” 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(全排列)的更多相关文章
- HDU - 1027 Ignatius and the Princess II 全排列
Ignatius and the Princess II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ( ...
- HDU_1027_Ignatius and the Princess II_全排列
Ignatius and the Princess II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ( ...
- poj 1027 Ignatius and the Princess II全排列
Ignatius and the Princess II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ( ...
- HDU Ignatius and the Princess II 全排列下第K大数
#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include& ...
- Ignatius and the Princess II(全排列)
Ignatius and the Princess II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ( ...
- 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 ...
- 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 ( ...
- hdu1027 Ignatius and the Princess II (全排列 & STL中的神器)
转载请注明出处:http://blog.csdn.net/u012860063 题目链接:http://acm.hdu.edu.cn/showproblem.php? pid=1027 Ignatiu ...
- (全排列)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 ...
随机推荐
- python常用模块之os模块
全部参考~~~~~~~ 1. 解释说明版:https://www.cnblogs.com/yufeihlf/p/6179547.html 2. 简洁版: https://www.cnblogs.com ...
- linux 下的init 0,1,2,3,4,5,6知识介绍
一. init是Linux系统操作中不可缺少的程序之一. 所谓的init进程,它是一个由内核启动的用户级进程. 内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后, ...
- jstl和EL表达式混合使用
EL表达式里判断字符串,或者... ${(wrt.acceptName eq '刘立荣') || (wrt.acceptName eq '卢伟冰') } <tr> <td heigh ...
- iic 之24C256存储器 及PCF8563
参考文章: http://www.21ic.com/jichuzhishi/mcu/memory/2013-02-28/159439.html 完整的例子: http://blog.csdn.net/ ...
- day 10 - 2 函数练习
1.写函数 接收 n 个数字 求这些参数数字的和 def sum_func(*args): total = 0 for i in args: total += i return total prin ...
- 【mmall】url-pattern配置为"/"和"/*"的区别
我的代码 <!-- springmvc --> <servlet> <servlet-name>springmvc</servlet-name> < ...
- 为何invalidate()不可以直接在UI线程中调用&invalidate与postInvalidate
1.android ui操作为什么一定要在主线程中执行? 答:Android UI操作是单线程模型,关于UI更新的相关API(包括invalidate())都是按照单线程设计的,对于多线程运行时不安全 ...
- CountDownLatch 闭锁、FutureTask、Semaphore信号量、Barrier栅栏
同步工具类可以是任何一个对象.阻塞队列可以作为同步工具类,其他类型的同步工具类还包括信号量(Semaphore).栅栏(Barrier).以及闭锁(Latch). 所有的同步工具类都包含一些特定的结构 ...
- 使用ENCKEYS方法加密数据
要使用这种数据加密方法,您需要配置Oracle GoldenGate以生成加密密钥并将密钥存储在本地ENCKEYS文件中.此方法使用的永久密钥只能通过根据使用加密密钥填充ENCKEYS文件中的说明重新 ...
- [转] ElasticSearch 常用的查询过滤语句
备忘remark https://www.cnblogs.com/ghj1976/p/5293250.html query 和 filter 的区别请看: http://www.cnblogs.co ...