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; }