1978-全排列

【C系列4.10】函數訓練之全排列 1978

Time Limit:  1 s      Memory Limit:   32 MB
Submission:221     AC:46     Score:72.38

 

Description

cyn小朋友今天數學課上學到的是全排列,課後,mwy老師給了他幾串字符串,你能幫cyn寫出它們的全排列嗎?

Input

第一行輸入一個整數T,表示有幾組數據。

下面每行輸入一串字符串(不會出現重複字母)。

Output

對於每一組數據,輸出其全部排列(按字典序順序),中間以空格間隔。

Samples

input:
1
abc
output:
abc acb bac bca cab cba





下附AC代碼:
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
#define N 32
bool cmp(const char &a, const char &b) {
  if (a <= 'Z' && a >= 'A' && b <= 'Z' && b >= 'A')
    return a < b;
  if (a <= 'z' && a >= 'a' && b <= 'z' && b >= 'a')
    return a < b;
  if (a <= 'Z' && a >= 'A' && b <= 'z' && b >= 'a')
    return a + 'a' - 'A' <= b;
  if (a <= 'z' && a >= 'a' && b <= 'Z' && b >= 'A')
    return a < b + 'a' - 'A';
}
int main() {
  int t;
  char str[N];
  scanf("%d", &t);
  getchar();
  while (t--) {
    memset(str, 0, sizeof(str));
    gets(str);
    int len = strlen(str);
    sort(str, str + len, cmp);
    cout << str;
    while (next_permutation(str, str + len)) {
      cout << " ";
      cout << str ;
    }
    cout << endl;
  }
  return 0;
}



發佈了53 篇原創文章 · 獲贊 8 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章