2012-09-06 27 views
-2

我需要每一個可能的組合來構建在PHP中的字符串像字符串在PHP中的每一種可能的組合

s5z-s4z-S3Z-S2Z-s1z

,其中 'S' 則數字總是處於相同的位置。 唯一的區別是最終是否有z。

因此,例如,我會

  • s5z-s4z-S3Z-S2Z-S1
  • s5z-s4z-S3Z-S2Z-s1z
  • s5z-s4z-S3Z-S2-S1
  • s5z-s4z-S3Z-S2Z-S1
  • s5z-s4z-S3Z-S2-s1z
  • s5z-s4z-S3-S2-s1z

我該怎麼做呢?

+3

家庭作業。瘸。 – Ray

+0

請將您的問題重新標記爲「家庭作業」。另外,它是一個重複:http://stackoverflow.com/questions/2617055/how-to-generate-all-permutations-of-a-string-in-php – alfasin

+0

重複作業?這是...跛腳(跛腳()).. –

回答

3

所以基本上這一切都依賴於「是否有z」。這可以很容易地轉換爲二進制數字,其中每個0代表z不在那裏,並且每個1指示存在z

因此,您只需循環遍歷所有數字。

$length = 5; 
$max = bindec(str_repeat("1",$length)); 
$out = Array(); 
for($i=0; $i<$max; $i++) { 
    $entry = Array(); 
    for($x=0; $x<$length; $x++) $entry[] = "s".($length-$x).($i & (1<<$x) ? "z" : ""); 
    $out[] = implode("-",$entry); 
} 
echo implode(" ",$out); 
+0

+1對於一個蹩腳問題的好答案。 – alfasin

+0

謝謝!我嘗試了各種各樣的東西,無法得到它。非常感謝你。 – Blade

相關問題