• Source
    1. #include<bits/stdc++.h>
    2.  
    3. using namespace std;
    4.  
    5. vector<char>ch;
    6.  
    7. bool taken[150];
    8.  
    9. string s;
    10. int k;
    11.  
    12. void backtracking(int len,int start)
    13. {
    14. int i,j,a;
    15. char c;
    16.  
    17. if(ch.size()==k)
    18. {
    19. for(i=0; i<k; i++)
    20. {
    21. cout<<ch[i];
    22. }
    23.  
    24. puts("");
    25.  
    26. return;
    27. }
    28.  
    29. for(j=start; j<len; )
    30. {
    31. c = s[j];
    32.  
    33. ch.push_back(c);
    34.  
    35. backtracking(len,j+1);
    36.  
    37. ch.pop_back();
    38.  
    39. while(s[j]==c)j++;
    40. }
    41. return;
    42. }
    43.  
    44. int main()
    45. {
    46. int len,i;
    47.  
    48. while(cin>>s)
    49. {
    50. scanf("%d",&k);
    51.  
    52. sort(s.begin(),s.end());
    53.  
    54. len = s.length();
    55.  
    56. backtracking(len,0);
    57.  
    58. }
    59.  
    60. return 0;
    61. }