Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
所有可能的组合,如何制作图案?PHP?_Php_Algorithm_Combinations - Fatal编程技术网

所有可能的组合,如何制作图案?PHP?

所有可能的组合,如何制作图案?PHP?,php,algorithm,combinations,Php,Algorithm,Combinations,我正在做一个代码,以消除不必要的组合,如我ABCDE不想要AAA BBB AB BA只想要ABC ABD ABE。。。。所以,希望它对任何情况都有效,我用这种方式工作的示例代码:他制作了一组1-6 3对3的组合。。。但我要他用1-15的funciane和4对4或10对10的组合。。。。请参见示例以获得更好的理解 $lista = array(1,2,3,4,5,6); $b=1; for ($i=0; $i<=3; $i++) { for ($j=$b; $j<=4;$j++

我正在做一个代码,以消除不必要的组合,如我ABCDE不想要AAA BBB AB BA只想要ABC ABD ABE。。。。所以,希望它对任何情况都有效,我用这种方式工作的示例代码:他制作了一组1-6 3对3的组合。。。但我要他用1-15的funciane和4对4或10对10的组合。。。。请参见示例以获得更好的理解

$lista = array(1,2,3,4,5,6);
$b=1;
for ($i=0; $i<=3; $i++) {
    for ($j=$b; $j<=4;$j++) {
    //  printf('valor do j = '.$j.'<br>');
        for ($k=$j+1; $k<count($lista); $k++) {
            printf($lista[$i].$lista[$j].$lista[$k].'<br>');
        }
    }
    $b++;
}
结果

123124125126134135136145146156235236245246256345346356456

您不需要安装pear,只需下载并使用该软件包即可

您不需要安装pear,只需下载并使用该软件包即可。

原始代码:我刚刚添加了$len部分

原始代码:我刚刚添加了$len部分


我已经编写了一个类来处理处理处理二项式系数的常用函数,这是您的问题所属的问题类型。它执行以下任务:

将任意N选择K的所有K索引以良好格式输出到文件。可以用更具描述性的字符串或字母替换K索引。这种方法使得解决这类问题变得非常简单

将K索引转换为已排序二项系数表中某个条目的正确索引。这种技术比以前发布的依赖于迭代的技术要快得多。它通过使用帕斯卡三角形固有的数学特性来实现这一点。我的论文谈到了这一点。我相信我是第一个发现并发表这项技术的人,但我可能错了

将已排序的二项式系数表中的索引转换为相应的K索引。我相信它可能比你找到的链接要快

使用此方法计算二项式系数,它不太可能溢出,并且适用于较大的数字

该类是用.NETC编写的,它提供了一种通过使用泛型列表来管理与问题相关的对象(如果有的话)的方法。这个类的构造函数接受一个名为InitTable的bool值,如果为true,它将创建一个通用列表来保存要管理的对象。如果此值为false,则不会创建表。执行上述4种方法不需要创建表。提供了访问器方法来访问表

有一个关联的测试类,它显示了如何使用该类及其方法。它已经过2个案例的广泛测试,没有已知的bug

要阅读有关此类的信息并下载代码,请参阅

将此类转换为Perl应该不难。另一种选择可能是将其转换为Java,然后从Perl调用它

从上面的例子来看,看起来您使用的是6选择3的情况,这意味着有6个可能的项目一次取3。因此,执行此操作的一些示例代码如下所示:

// Create the binomial coefficient object for the 6 choose 3 case and
// do not bother to create the list of objects table.
BinCoeff<int> BC = new BinCoeff<int>(6, 3, false);
int[] KIndexes = new int[3];
int NumCombos6Choose3 = BinCoeff<int>.GetBinCoeff(6, 3);
// Loop through all of the combinations for this case.
for (int Loop = 0; Loop < NumCombos6Choose3; Loop++)
{
   // Get the K-Indexes for this combination.
   // The combinations are returned in rank order.
   BC.GetKIndexes(Loop, KIndexes);
   // Print out the K-Indexes or any other processing.
   ...
}

我已经编写了一个类来处理处理处理二项式系数的常用函数,这是您的问题所属的问题类型。它执行以下任务:

将任意N选择K的所有K索引以良好格式输出到文件。可以用更具描述性的字符串或字母替换K索引。这种方法使得解决这类问题变得非常简单

将K索引转换为已排序二项系数表中某个条目的正确索引。这种技术比以前发布的依赖于迭代的技术要快得多。它通过使用帕斯卡三角形固有的数学特性来实现这一点。我的论文谈到了这一点。我相信我是第一个发现并发表这项技术的人,但我可能错了

将已排序的二项式系数表中的索引转换为相应的K索引。我相信它可能比你找到的链接要快

使用此方法计算二项式系数,它不太可能溢出,并且适用于较大的数字

该类是用.NETC编写的,它提供了一种通过使用泛型列表来管理与问题相关的对象(如果有的话)的方法。这个类的构造函数接受一个名为InitTable的bool值,如果为true,它将创建一个通用列表来保存要管理的对象。如果此值为false,则不会创建表。执行上述4种方法不需要创建表。提供了访问器方法来访问表

有一个关联的测试类,它显示了如何使用该类及其方法。它已经过2个案例的广泛测试,没有已知的bug

要阅读有关此类的信息并下载代码,请参阅

将此类转换为Perl应该不难。另一种选择可能是将其转换为Java,然后从Perl调用它

从上面的例子来看,看起来您使用的是6选择3的情况,这意味着有6个可能的项目一次取3。所以 执行此操作的一些示例代码如下所示:

// Create the binomial coefficient object for the 6 choose 3 case and
// do not bother to create the list of objects table.
BinCoeff<int> BC = new BinCoeff<int>(6, 3, false);
int[] KIndexes = new int[3];
int NumCombos6Choose3 = BinCoeff<int>.GetBinCoeff(6, 3);
// Loop through all of the combinations for this case.
for (int Loop = 0; Loop < NumCombos6Choose3; Loop++)
{
   // Get the K-Indexes for this combination.
   // The combinations are returned in rank order.
   BC.GetKIndexes(Loop, KIndexes);
   // Print out the K-Indexes or any other processing.
   ...
}

如果出于某种原因不想使用库代码,只要搜索,stackoverflow上的组合/排列问题就没有尽头。这是一项普通的大学作业,所以总是有人问。正式地说,你想要不重复的组合谢谢,我会看看这两个解决方案,创建它的代码会选择一个随机列表。按照升序,我必须用这些值传递值类型数组02、10、15、16、30、31或07、08、20、25、30、40等等​​将统计哪些组是最常见的类型重复频率为02,10,15,但根据已经发布的内容,我将根据需要进行更多的研究。如果出于某种原因不想使用库代码,只要搜索,stackoverflow上的组合/排列问题就没有尽头。这是一项普通的大学作业,所以总是有人问。正式地说,你想要不重复的组合谢谢,我会看看这两个解决方案,创建它的代码会选择一个随机列表。按照升序,我必须用这些值传递值类型数组02、10、15、16、30、31或07、08、20、25、30、40等等​​将统计哪些组是最常见的类型重复频率为02,10,15,但根据已经发布的内容,我将根据需要进行更多的研究。谢谢,我将查看这两个解决方案,创建它的代码将选择一个随机列表。按照升序,我必须用这些值传递值类型数组02、10、15、16、30、31或07、08、20、25、30、40等等​​将统计哪些组是最常见的类型重复02、10、15的频率,但根据已经发布的内容,我将根据需要进行更多的研究。请记住,您的代码提供的是排列,而不是组合。顺序在排列中很重要,这就是为什么在输出中123被认为不同于321。我想我们需要的是组合,但谁知道呢。谢谢,我会先看看这两个解决方案,创建它的代码会选择一个随机列表。按照升序,我必须用这些值传递值类型数组02、10、15、16、30、31或07、08、20、25、30、40等等​​将统计哪些组是最常见的类型重复02、10、15的频率,但根据已经发布的内容,我将根据需要进行更多的研究。请记住,您的代码提供的是排列,而不是组合。顺序在排列中很重要,这就是为什么在输出中123被认为不同于321。我想有人要求使用组合,但谁知道呢。
// Create the binomial coefficient object for the 6 choose 3 case and
// do not bother to create the list of objects table.
BinCoeff<int> BC = new BinCoeff<int>(6, 3, false);
int[] KIndexes = new int[3];
int NumCombos6Choose3 = BinCoeff<int>.GetBinCoeff(6, 3);
// Loop through all of the combinations for this case.
for (int Loop = 0; Loop < NumCombos6Choose3; Loop++)
{
   // Get the K-Indexes for this combination.
   // The combinations are returned in rank order.
   BC.GetKIndexes(Loop, KIndexes);
   // Print out the K-Indexes or any other processing.
   ...
}