【发布时间】:2018-12-11 19:00:25
【问题描述】:
您好,感谢您阅读我的问题。我希望弄清楚如何存储仅由数字组成的 4 字符串的所有可能排列,可以重复。
char str[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
sort(begin(str), end(str));
do{
cout << str[0] << ' ' << str[1] << ' ' << str[2] << ' ' << str[3] << '\n';
}while(next_permutation(begin(str), end(str)));
上面的代码就是我现在所拥有的。它打印排列,但我不知道如何存储它们。它也循环过去了我在 9999 之后需要的排列,它似乎重新开始。我正在寻找一种将“0000”、“0001”、“0002”、“0003”、“0004”、......、“9999”(0000-9999)存储到字符串向量中的方法。我必须在没有递归的情况下执行此操作,并且接受使用 STL。
【问题讨论】:
-
如果允许重复,这通常称为
cartesian product,而不是permutations。 -
显示的代码不能产生'0000'等,请编辑您的问题以包含minimal reproducible example
-
见笛卡尔积。
-
@user10605163 Combination 也不是正确的词——它暗示顺序无关紧要。
-
@TypeIA 谢谢,不知道为什么我说
combinations。