1023 - Discovering Permutations
PDF (English) Statistics Forum
Time Limit: 0.5 second(s) Memory Limit: 32 MB
In this problem you have to find the permutations using the first N English capital letters. Since there can be many permutations, you have to print the first K permutations.
Input
Input starts with an integer T (≤ 100), denoting the number of test cases.
Each case contains two integers N, K (1 ≤ N ≤ 26, 1 ≤ K ≤ 30).
Output
For each case, print the case number in a line. Then print the first K permutations that contain the first N English capital letters in alphabetical order. If there are less than K permutations then print all of them.
Sample Input
Output for Sample Input
2
3 8
10 10
Case 1:
ABC
ACB
BAC
BCA
CAB
CBA
Case 2:
ABCDEFGHIJ
ABCDEFGHJI
ABCDEFGIHJ
ABCDEFGIJH
ABCDEFGJHI
ABCDEFGJIH
ABCDEFHGIJ
ABCDEFHGJI
ABCDEFHIGJ
ABCDEFHIJG
解题思路: 全排列模板改进一下,直接过。
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #include<string> using namespace std; char a[26]={'A','B','C','D','E','F','G', 'H','I','J','K','L','M','N', 'O','P','Q','R','S','T','U', 'V','W','X','Y','Z'}; int T,n,k,cnt; string str[130]; bool permutation(int num){ if(num>=n){ int i;int sum; sum = 0; str[cnt] = a; str[cnt][n] = '