相关疑难解决方法(0)

从n返回k个元素的所有组合的算法

我想写一个函数,它将一个字母数组作为参数,并选择一些字母.

假设您提供了8个字母的数组,并希望从中选择3个字母.然后你应该得到:

8! / ((8 - 3)! * 3!) = 56
Run Code Online (Sandbox Code Playgroud)

数组(或单词)返回,每个包含3个字母.

algorithm combinations

551
推荐指数
23
解决办法
43万
查看次数

Php递归以获得字符串的所有可能性

这是我的代码,以获得所有可能性:

$seq[1] = 'd';
$seq[2] = 'f';
$seq[3] = 'w';
$seq[4] = 's';

for($i = 1; $i < 5; $i++)
{
    $s['length_1'][] = $seq[$i];
    $c1++;

    for($i2 = $i+1; $i2 < 5; $i2++)
    {
        $s['length_2'][] = $seq[$i].$seq[$i2]; 
        $last = $seq[$i].$seq[$i2]; 
        $c2++;

        for($i3 = $i2+1; $i3 < 5; $i3++)
        { 
            $s['length_3'][] = $last.$seq[$i3];
            $last = $last.$seq[$i3];    
            $c3++;

            for($i4 = $i3+1; $i4 < 5; $i4++)
            {
                $s['length_4'][] = $last.$seq[$i4];   
                $c4++;  
            }
        }
    }
}

for($i = 0; $i < $c1; $i++)
    echo $s['length_1'][$i].'<br>'; …
Run Code Online (Sandbox Code Playgroud)

php recursion

10
推荐指数
3
解决办法
1万
查看次数

PHP查找所有(某种程度上)数组的唯一组合

我整天都在看PHP数组排列/组合问题..但仍然无法弄明白:/

如果我有一个像这样的数组:

20 //key being 0    
20 //key being 1    
22 //key being 2    
24 //key being 3
Run Code Online (Sandbox Code Playgroud)

我需要组合如:

20, 20, 22 //keys being 0 1 2    
20, 20, 24 //keys being 0 1 3    
20, 22, 24 //keys being 0 2 3
20, 22, 24 //keys being 1 2 3
Run Code Online (Sandbox Code Playgroud)

我目前的代码给了我:

20, 22, 24
Run Code Online (Sandbox Code Playgroud)

因为它不想重复20 ...但这就是我需要的!

这是我的代码.它直接来自Php递归以获得字符串的所有可能性

function getCombinations($base,$n){

$baselen = count($base);
if($baselen == 0){
    return;
}
    if($n == 1){
        $return = array();
        foreach($base as $b){
            $return[] = …
Run Code Online (Sandbox Code Playgroud)

php algorithm recursion combinations permutation

9
推荐指数
1
解决办法
1万
查看次数

MySQL选择3个随机行,其中三行的总和小于值

我试图从表中选择三个随机行,其中它们的组合item_price列小于所需的量.

想象一下你有<input>一美元金额.输入美元金额时,数据库会返回三个随机项,其中组合价格小于或等于您输入的金额.

如果我输入300美元,你可以购买这三件商品,150美元,100美元和50美元.我在创建一个将返回符合此条件的三个项目的查询时遇到困难.

SELECT t1.item_id, t1.item_price
FROM items t1
INNER JOIN items t2 ON ( t1.item_id = t2.item_id )
GROUP BY t1.item_id, t1.item_name, t1.item_price
HAVING SUM( t2.item_price ) <=300
ORDER BY RAND( )
LIMIT 3 
Run Code Online (Sandbox Code Playgroud)

我认为这样可行,但我认为这只是一个巧合.它似乎只返回价格低于300美元,而不是总价不到300美元的任何三件商品.

我也试过这个查询:

SELECT t1.item_id, t1.item_price
FROM   items t1
JOIN   items t2 ON t2.item_id <= t1.item_id
WHERE  t2.item_price <= 500
GROUP  BY t1.item_id
HAVING SUM(t2.item_price) <= 500
ORDER  BY RAND()
LIMIT 3
Run Code Online (Sandbox Code Playgroud)

再次,似乎首先工作,但后来它开始返回2000美元的项目.

如果在PHP中有更好的(甚至牺牲性能)方式,我不介意.我只是觉得查询不会那么困难.

一如既往,感谢任何人的帮助.

php mysql

8
推荐指数
1
解决办法
1216
查看次数

所有组合都没有重复,具有特定的基数

我有一个数组:

[a, b, c, d, e, f, ... , z]
Run Code Online (Sandbox Code Playgroud)

并且我将生成所有可能的子阵列的集合,不重复,其基数在X和Y之间.

我们假设php:

$array = array(1, 2, 3, 4, 5, 6, 7, 8);

$results = myFunction($array, 3, 5);
Run Code Online (Sandbox Code Playgroud)

我的函数应该返回如下内容:

array( 
    array(1, 2, 3),
    array(1, 2, 4),
    ...
    array(4, 5, 6, 7, 8),
);
Run Code Online (Sandbox Code Playgroud)

我的尝试是以二进制计数,从0到2 ^ n(其中n是集合的基数),如果数字1s在X和Y之间,则将由1s元素组成的数组添加到结果集中.

例如.

8  = 0000 0111 => add (6,7,8) to result
9  = 0000 1000 => no 
10 = 0000 1001 => no
...
Run Code Online (Sandbox Code Playgroud)

但它非常难看!有更好的算法吗?

我正在使用PHP,但随意使用你喜欢的任何语言.

php algorithm combinations

2
推荐指数
1
解决办法
2120
查看次数

获取字符串的组合

我正在研究动态报告,我想要一些组合.考虑我有一个array('1,'2','3','4')我想要的组合1,2 1,3 1,4但不喜欢1,2,3

几乎尝试了一切但不是解决方案.

php arrays combinations

0
推荐指数
1
解决办法
59
查看次数

标签 统计

php ×5

combinations ×4

algorithm ×3

recursion ×2

arrays ×1

mysql ×1

permutation ×1