#include <iostream> #include <map> #include <queue> using namespace std; void getRankList(string s) { map<string, bool> strMap; queue<string> myQueue; myQueue.push(s); strMap[s] = true; while (!myQueue.empty()) { string current = myQueue.front(); myQueue.pop(); for (int i = 0; i <= (int)current.size() - 2; i++) {//size()返回值是无符号数,做完减法也会当做无符号数 string temp = current; swap(temp[i], temp[i + 1]); if (strMap.find(temp) == strMap.end()) { strMap[temp] = true; myQueue.push(temp); } } } for (auto it = strMap.begin(); it != strMap.end(); it++) { cout << it->first << endl; } } int main() { string a; while (cin >> a ) { // 注意 while 处理多个 case getRankList(a); } } // 64 位输出请用 printf("%lld")