6 411 8 Sample Output1 2 3 5 6 41 2 3 4 5 6 7 9 8 11 10解題思路:題目意思就是給出一個數N,則它有一個序列1~N,求它全排列的第M小數。例如第一組測試數據6 4第一小全排列 1 2 3 4 5 6第二小全排列 1 2 3 4 6 5第三小全排列 1 2 3 5 4 6第四小全排列 1 2 3 5 6 4則答案就是1 2 3 5 6 4只要讀懂了題目的意思,就不要擔心了。因為STL中有一個求全排列的函數可以幫我們解決這個問題。頭文件algorithm中包含一個函數next_permutation可以求全排列,那么這個題就變得非常簡單了,加上頭文件,然后直接調用函數就可以了。#include <iostream>#include <stdio.h>#include <string.h>#include <algorithm>#include <queue>#include <string>using namespace std;int a[100000];int main(){ int m,n,i; while(~scanf("%d%d",&m,&n)) { for(i = 0; i < m; i++) a[i]=i+1; n = n-1; //第一個數是第一個排列數 while(n--) { next_permutation(a,a+m); } printf("%d",a[0]); for(i = 1; i < m; i++) printf(" %d",a[i]); printf("/n"); } return 0;}
新聞熱點
疑難解答