2012-09-25 23 views
5

thể trùng lặp:
Permutations - all possible sets of numbersXây dựng một cây xác suất bằng cách sử dụng php?

Tôi có một mảng mà có một danh sách các tùy chọn, Mỗi tùy chọn là duy nhất và không thể lặp lại.

Tôi muốn xây dựng một cây xác suất sử dụng các tùy chọn này:

$options = array('1','2','3','4','A','E','I','O'); 

Vì vậy, một dòng hợp lệ có thể là 1-2-E-3-O-I-4-A

Làm thế nào tôi có thể làm điều này? (hoặc ít nhất là hướng tôi đi đúng hướng!)

+0

Thực ra bạn muốn tìm tất cả hoán vị của mảng '$ options'? – fsenart

+3

Vui lòng kiểm tra [câu hỏi này] (http://stackoverflow.com/questions/5506888/permutations-all-possible-sets-of-numbers). Nó có thể hữu ích. –

Trả lời

0
<?php 

function pc_permute($items, $perms = array()) { 
    if (empty($items)) { 
     print join('-', $perms) . "<br />"; 
    } else { 
     for ($i = count($items) - 1; $i >= 0; --$i) { 
      $newitems = $items; 
      $newperms = $perms; 
      list($foo) = array_splice($newitems, $i, 1); 
      array_unshift($newperms, $foo); 
      pc_permute($newitems, $newperms); 
     } 
    } 
} 

$options = array('1','2','3','4','A','E','I','O'); 
$mass = pc_permute($options); 

?> 
+0

Tôi muốn hiển thị tất cả các dòng có thể – Hailwood

+0

@Hailwood giống như thế này? – Peon

+0

Không, anh ấy muốn TẤT CẢ các dòng có thể, không chỉ một cách ngẫu nhiên ... –

0

Đệ quy có lẽ là cách dễ nhất để thực hiện việc này, nhưng nó sẽ không mở rộng tốt đến các tập dữ liệu lớn.

Về cơ bản, viết một hàm có một loạt các tùy chọn, chọn một lần tắt một cuộc gọi.

Các vấn đề liên quan