Heim > Backend-Entwicklung > PHP-Tutorial > 一个排列组合算法有关问题 抛砖引玉一上

一个排列组合算法有关问题 抛砖引玉一上

WBOY
Freigeben: 2016-06-13 12:59:07
Original
1057 Leute haben es durchsucht

一个排列组合算法问题 抛砖引玉一下
中学时候都学过 排列组合 1 2 3 4 5 6可以组成720个不同的字符串
这里写了一个粗糙的实现方法 例为 1- 6
希望哪个高手可以指点一二 
$j=0;
for($i=123456;$i $box=array();

$ge =$i%10;
if($ge>6 || $ge==0){
continue;
}
$box[]=$ge;
$shi = intval($i/10)%10;
if($shi>6 || $shi ==0){
continue;
}
$box[]=$shi;
$bai = intval($i/100)%10;
if($bai>6 || $bai ==0){
continue;
}
$box[]=$bai;
$qian = intval($i/1000)%10;
if($qian>6 || $qian ==0){
continue;
}
$box[]=$qian;
$wan = intval($i/10000)%10;
if($wan>6 || $wan ==0){
continue;
}
$box[]=$wan;
$shiwan = intval($i/100000);
if($shiwan>6 || $shiwan ==0){
continue;
}
$box[]=$shiwan;
//echo count(array_unique($box));
//echo '
';
//var_dump(array_unique($box));
//echo '
';
if(count(array_unique($box))!=6){
continue;
}

if($j%10==0){
echo "
";
}
$j++;
echo ' ',$i,' ';
}
echo "
";
echo "一共{$j}个";
------解决方案--------------------

$a = perm(array(1,2,3,4,5,6));<br />
echo count($a);<br />
//print_r($a);<br />
<br />
function perm($list, $k=0, $m=0) {     <br />
  if(! $m) $m = count($list) - 1; <br />
  $r = array();    <br />
  if($k >= $m) {          <br />
    $r[] = join('', $list);         <br />
  }else {         <br />
    for($i = $k; $i <= $m; $i++) {             <br />
      list($list[$k], $list[$i]) = array($list[$i], $list[$k]);<br />
      $r = array_merge($r, perm($list, $k + 1, $m));             <br />
      list($list[$k], $list[$i]) = array($list[$i], $list[$k]);<br />
    }<br />
  }<br />
  return $r;<br />
}
Nach dem Login kopieren

720

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage