24.字符串的排列
2015-02-03 10:01
141 查看
题目:
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
输入:
每个测试案例包括1行。
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
输出:
对应每组数据,按字典序输出所有排列。
样例输入:
样例输出:
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
输入:
每个测试案例包括1行。
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
输出:
对应每组数据,按字典序输出所有排列。
样例输入:
abc BCA
样例输出:
abcacbbacbcacabcba ABCACBBACBCACABCBA
代码实现:
#include<iostream> #include<string> #include<algorithm> #include<cstdio> using namespace std; bool next_permutation(string &s) { bool flag = false; int len = s.length(), a, b; if(len < 2) return false; for(a=len-2; a>=0; --a) if(s[a] < s[a+1]) { flag = true; break; } if(flag == false) return flag; for(b=len-1; b>a; --b) if(s[a] < s[b]) break; swap(s[a], s[b]); reverse(s.begin()+a+1, s.end()); return flag; } int main() { string s; while(cin >> s) { sort(s.begin(), s.end()); do { printf("%s\n",s.c_str()); } while(next_permutation(s)); } return 0; }
相关文章推荐
- (C#)计算字符串排列组合数 如"abcd"组合数为24 "aabb"组合数为6
- 剑指offer(24)-字符串的排列
- 24、字符串的排列
- 传入一个字符串参数 获取这个字符串内所有字符的 不同排列情况
- 字符串的全排列和组合算法
- 找出abc在字符串s中的所有排列方式
- 确定某字符串的所有排列组合
- 字符串的排列
- 字符串的排列
- 编写函数void change(char *a,char *b,char*c)。 函数功能是首先把b指向的字符串逆向存放,然后将a指向的字符串和b指向的字符串按排列顺序交叉合并到c指向的数组中,两个字
- 字符串的排列与组合
- 字符串排列-dfs算法
- 字符串的排列
- 字符串的所有排列
- 剑指offer:字符串排列
- StrReverse函数:将制定字符串倒序排列
- 字符串的排列与组合及八皇后等其他相关问题
- 剑指offer:字符串的排列(java)
- 字符串的升序降序排列
- [ACM] poj 1146 ID Codes(字符串的下一个排列)