hdu 1027 输出第m个全排列(next_permutation)

Sample Input
6 4 //输出第4个全排列
11 8

Sample Output
1 2 3 5 6 4
1 2 3 4 5 6 7 9 8 11 10

 1 # include <cstdio>
 2 # include <iostream>
 3 # include <algorithm>
 4 using namespace std ;
 5
 6 int a[2000] ;
 7
 8 int main ()
 9 {
10     int n , m ;
11     while (scanf("%d %d" , &n , &m) != EOF)
12     {
13         int i ;
14         for (i = 1 ; i <= n ;i++)
15            a[i] = i ;
16         int num = 1 ;
17         while (num < m)
18         {
19             next_permutation(a+1 , a+1+n) ;
20             num++ ;
21         }
22         for (i = 1 ; i <= n-1 ;i++)
23           printf("%d " , a[i]) ;
24         printf("%d\n",a[n]) ;
25     }
26 }

时间: 2024-10-11 17:43:17

hdu 1027 输出第m个全排列(next_permutation)的相关文章

关于全排列 next_permutation() 函数的用法

这是一个c++函数,包含在头文件<algorithm>里面,下面是基本格式. 1 int a[]; 2 do{ 3 4 }while(next_permutation(a,a+n)); 下面的代码可产生1~n的全排列. #include <stdio.h> #include <algorithm> using namespace std; int main(){ int n; while(scanf("%d",&n)&&n){

HDU 1027 Ignatius and the Princess II

原题代号:HDU 1027 原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1027 原题描述: Ignatius and the Princess II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 8415    Accepted Submission(s): 4955 Problem

输出一个整数的全排列

1 #include <stdio.h> 2 #include <stdlib.h> 3 4 // 数组a用来保存一种排列,也就是说100以内数(不包括100)的排列 5 int a[100], n, count = 0; 6 // 交换数组中的两个元素 7 void swap(int t1, int t2) 8 { 9 int temp; 10 temp = a[t1]; 11 a[t1] = a[t2]; 12 a[t2] = temp; 13 } 14 // 用来输出一种排列

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 (Java/Others)Total Submission(s): 9458    Accepted Submission(s): 5532 Problem Description Now our hero finds the door to the BEelzebub feng5166. He op

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/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 10388    Accepted Submission(s): 5978 Problem Description Now our

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

链接: http://acm.hdu.edu.cn/showproblem.php?pid=1027 Ignatius and the Princess II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 5822    Accepted Submission(s): 3433 Problem Description Now our h

hdu 1027 Ignatius and the Princess II (STL 全排列)

题目链接今天学了 全排列函数 之后,再回过头来看这一题,发现这时对于这样的题 就是一个字 秒 .主要函数有两个 next_permutation 和 prev_permutation这两个一个是向后找 一个是向前找,next的是往后,prev的是向前找.有的人可能不太明白我这里只的向前和向后的意思. 向前 就是 往 字典序小 的 方向 找 ,反之 就是向前. 举个例子把 :假设数组a[n],i<=m,next_permutation(a+i,a+m)就表示对a[i]到a[m]进行操作,每操作一次

全排列 next_permutation() 函数的用法

在头文件<algorithm>里面有如下代码: int a[]; do { } while(next_permutation(a,a+n)); 可产生1~n的全排列有如下代码: 1 #include <stdio.h> 2 #include <algorithm> 3 using namespace std; 4 int main(){ 5 int n; 6 while(scanf("%d",&n)&&n){ 7 int a[

STL中关于全排列next_permutation以及prev_permutation的用法

这两个函数都包含在algorithm库中.STL提供了两个用来计算排列组合关系的算法,分别是next_permutation和prev_permutation. 一.函数原型 首先我们来看看这两个函数的函数原型: next_permutation: 1 template< class BidirIt >bool next_permutation( BidirIt first, BidirIt last ); 2 template< class BidirIt, class Compare