有一种固定的格式,可以记住 /*给出一个字符串S(可能有重复的字符),按照字典序从小到大,输出S包括的字符组成的所有排列。例如:S = "1312", 输出为: 1123 1132 1213 1231 1312 1321 2113 2131 2311 3112 3121 3211 Input 输入一个字符串S(S的长度 <= 9,且只包括0 - 9的阿拉伯数字) Output 输出S所包含的字符组成的所有排列 Sample Input 1312 Sample Output 1123 1132 1213 1231 1312 1321 2113 2131 2311 3112 3121 3211 */ /* next_permuation: 这是一个c++函数,包含在头文件<algorithm>里面,下面是基本格式。 1 int a[]; 2 do{ 3 4 }while(next_permutation(a,a+n)); 有sort产生的要比无sort情况多,仔细比较各种组合方法和有无sort()的输出,可以发现函数next_permutation() 是按照字典序产生排列的,并且是从数组中当前的字典序开始依次增大直至到最大字典序。 */ #include<iostream> #include<algorithm> #include<cstring> int main() { using namespace std; char a[10]; int i; cin>>a; int len=strlen(a); sort(a,a+len); do //基本格式 { for(i=0;i<len;i++) { cout<<a[i]; } cout<<endl; }while(next_permutation(a,a+len)); }
全排序问题
最新推荐文章于 2023-08-09 16:34:11 发布