読者です 読者をやめる 読者になる 読者になる

UVa195 Anagram

解法
テストケースごとに辞書順で出力する必要がある。順序の基準は、大文字小文字の区別なしで辞書順ソート、同じ文字なら大文字が小文字より先に来る。元の文字列のままだと、アスキーコードが早い順でソートされてしまい、必ず大文字が小文字より先に来てしまうので注意。

#include <bits/stdc++.h>

using namespace std;

#define ALL(c) (c).begin(), (c).end()

bool cmp(char lhs, char rhs) {
  if(toupper(lhs) == toupper(rhs)) {
    return lhs < rhs;
  }
  return toupper(lhs) < toupper(rhs);
}

int main() {
  
  int Tc; cin >> Tc;
  while(Tc--) {
    string ana; cin >> ana;
    sort(ALL(ana), cmp);
    do {
      cout << ana << endl;
    } while(next_permutation(ALL(ana), cmp));
  }
  
  return 0;
}