【发布时间】:2016-08-09 17:59:33
【问题描述】:
我正在尝试编写算法来获取所有组合并同时增加一并得到这个
function generate($index){
$xxx = '';
$flag = 0;
$lengtchString = strlen($index);
for($y = 0; $y != $lengtchString; $y++) {
$xxx .= "$y";
}
while ($flag != $lengtchString )
{
for ($i = 0; $i<$lengtchString-1; $i++)
{
$temp = $xxx[$i];
$xxx[$i] = $xxx[$i+1];
$xxx[$i+1] = $temp;
echo $xxx."<br>";
}
$flag++;
}
}
generate('abc');
输出是
102
120
210
201
021
012
我需要获取所有组合,不仅是3 数字,还包括所有组合。
例如,如果我写 'abc'... 我需要像
102
120
210
201
021
012
256
874
569
236
254
028
等等....直到789 在数字不会重复的情况下...
我的想法实际上被吹了,无法为此获得适当的算法。提前致谢
【问题讨论】:
-
你已经使用 $y != $lengtchString 来获取 $xxx 数据,所以它永远不会像 256 那样给你输出,因为长度总是 3,它会在你的输出中给你 0,1,2 的组合.
-
我知道,但我不介意获取正确的代码,您还有其他建议吗?
-
你的最后一个例子有点误导我假设你想要所有 3 位数字,其中数字来自
{ 0,1,2,3,4,5,6,7,8,9, }并且每个数字在一个数字中是不同的(所以111无效)在那里任何其他限制,或者您只是错过了几个起始组合...请参阅iterative permutations without repetitions in C++,如果该数字已被使用,您只需添加到您的程序flag...
标签: php string algorithm combinations digit