PHP中的矩阵链式乘法

PHP中的矩阵链式乘法,php,c,algorithm,matrix-multiplication,Php,C,Algorithm,Matrix Multiplication,大约3年前,我用C编写了矩阵链式乘法算法,我刚刚开始学习PHP 以下是C语言中的算法: #include<stdio.h> #include<limits.h> int MatrixChainOrder(int p[], int n) { int m[n][n]; int i, j, k, L, q; for (i = 1; i < n; i++) m[i][i] = 0; // L is chain length. for (L=2; L

大约3年前,我用C编写了矩阵链式乘法算法,我刚刚开始学习PHP

以下是C语言中的算法:

#include<stdio.h>
#include<limits.h>


int MatrixChainOrder(int p[], int n)
{


int m[n][n];

int i, j, k, L, q;

for (i = 1; i < n; i++)
    m[i][i] = 0;

// L is chain length.  
for (L=2; L<n; L++)   
{
    for (i=1; i<=n-L+1; i++)
    {
        j = i+L-1;
        m[i][j] = INT_MAX;
        for (k=i; k<=j-1; k++)
        {
            // q = cost/scalar multiplications
            q = m[i][k] + m[k+1][j] + p[i-1]*p[k]*p[j];
            if (q < m[i][j])
                m[i][j] = q;
        }
    }
}

return m[1][n-1];
}

int main()
{
int arr[] = {1, 2, 3, 4};
int size = sizeof(arr)/sizeof(arr[0]);

printf("Minimum number of multiplications is %d ",
                   MatrixChainOrder(arr, size));

getchar();
return 0;
}
#包括
#包括
整数矩阵切诺德(整数p[],整数n)
{
int m[n][n];
int i,j,k,L,q;
对于(i=1;ifor(L=2;L
PHP
语法基于
C
,与后者类似

请查看:

function MatrixChainOrder($p, $n) {
    $m = array();
    for ($i = 1; $i < $n; $i++)
        $m[$i][$i] = 0;
    // L is chain length.  
    for ($L=2; $L < $n; $L++) {
        for ($i=1; $i <= $n-$L+1; $i++)
        {
            $j = $i+$L-1;
            $m[$i][$j] = PHP_INT_MAX;
            for ($k=$i; $k <= $j-1; $k++)
            {
                // q = cost/scalar multiplications
                $q = $m[$i][$k] + $m[$k+1][$j] + $p[$i-1]* $p[$k]* $p[$j];
                if ($q < $m[$i][$j])
                    $m[$i][$j] = $q;
            }
        }
    }
    return $m[1][$n-1];
}

$arr = array(1, 2, 3, 4);
$size = count($arr);

printf("Minimum number of multiplications is %d ", MatrixChainOrder($arr, $size));
函数矩阵chainorder($p,$n){ $m=数组(); 对于($i=1;$i<$n;$i++) $m[$i][$i]=0; //L是链条长度。 对于($L=2;$L<$n;$L++){ 对于($i=1;$i快速重拍:)

函数矩阵chainorder($p,$n){ 对于($i=1;$i<$n;$i++) $m[$i][$i]=0; 对于($L=2;$L<$n;$L++) {
对于($i=1;$i)你说“帮助”是什么意思?做所有的工作?或者你做了什么?@Mr.Smith我不想让你做所有的工作,我只是想帮助我并给我一些将其转换为php的示例。例如,我不知道如何在php中编写m[i][j]=INT_MAX以及如何在php中使用INT_MAX。。。
function matrixChainOrder($p, $n) {
    for ($i = 1; $i < $n; $i++)
        $m[$i][$i] = 0;

    for ($L = 2; $L < $n; $L++)
    {
        for ($i = 1; $i <= $n - $L + 1; $i++)
        {
            $j = $i + $L - 1;
            $m[$i][$j] = PHP_INT_MAX;
            for ($k = $i; $k <= $j - 1; $k++)
            {
                // $q = cost/scalar multiplications
                $q = @$m[$i][$k] + @$m[$k + 1][$j] + @$p[$i - 1] * @$p[$k] * @$p[$j];
                if ($q < $m[$i][$j])
                    $m[$i][$j] = $q;
            }
        }
    }
    return $m[1][$n-1];
}

$arr = array(1, 2, 3, 4);
$size = count($arr)/count($arr[0]);

echo "Minimum number of multiplications is ".matrixChainOrder($arr, $size);