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
Php 算法简化_Php_Algorithm_Optimization - Fatal编程技术网

Php 算法简化

Php 算法简化,php,algorithm,optimization,Php,Algorithm,Optimization,此问题与其他人先前发布的另一个问题有关: 注:本问题不需要了解上述问题;我只是想提供它作为参考和附加上下文 我能够解决这个问题,但我不喜欢我的解决方案——它显然是重复的,我知道它可以简化,但我的大脑现在太兴奋了,看不到它。在我下定决心之前,我不能屈服,不能上床睡觉 这是我目前的有效解决方案(至少是与我的问题相关的部分): 如何简化此过程并消除冗余? 这就是我对优化结构的设想,但它显然存在缺陷: for ($i=4;$i>=0;$i--) if ($col_diff==$i)

此问题与其他人先前发布的另一个问题有关:

注:本问题不需要了解上述问题;我只是想提供它作为参考和附加上下文

我能够解决这个问题,但我不喜欢我的解决方案——它显然是重复的,我知道它可以简化,但我的大脑现在太兴奋了,看不到它。在我下定决心之前,我不能屈服,不能上床睡觉

这是我目前的有效解决方案(至少是与我的问题相关的部分):

如何简化此过程并消除冗余?

这就是我对优化结构的设想,但它显然存在缺陷:

for ($i=4;$i>=0;$i--) 
    if ($col_diff==$i) 
        for ($j=$i;$j>=0;$j--)
            if ($row_diff==$j)
                $d = $j+1;

echo $d; // NOT Correct!

我根据您的代码制作了一张表:

    col 4   3   2   1   0
row                     
4       5   5   5   5   5
3       5   4   4   4   4
2       5   4   3   3   3
1       5   4   3   2   2
0       5   4   3   2   1
这里有一种模式:单元格的值等于其与0,0的距离(请参见类似数字如何形成以右下角为中心的“正方形”)

或:

…有点简单,是吗

将此视为证据:

cell4,4 = Max( 4, 4 ) + 1 == 5
cell2,3 = Max( 2, 3 ) + 1 == 4
对于您的PHP,这是:

$d = max( $col_diff, $row_diff ) + 1;
就这么简单

如果您的域限制在4-0范围内,请添加一个钳位:

$d = max( max( min( $col_diff, 4 ), 0 ), max( min( $row_diff, 4 ), 0 ) + 1;

实际上,我在你最初的帖子上发布了一个关于这个问题的更清晰的解决方案,大约在发布这个解决方案的同时。@CullyLarson我看到了。这就是你否决这个问题的原因吗?我不是想超过你。我正在努力提高我的编程技能,找到一种比第一次尝试更好的解决方案。最终,这个问题与你回答的问题无关。这个问题是关于如何简化冗余算法的。将鼠标悬停在降级按钮上,您会看到文本“此问题不显示研究成果”。我将其降级的原因是您已经提出的问题中有一个简化的解决方案。如果我只是看到了你上一个问题的答案,而不是我自己提供的,我会降级的。@CullyLarson请注意细节。(1) 你提到的最后一个问题不是我的问题。我对那个解决办法不感兴趣。(2) 这个问题是一个完全不同的性质,它与您为另一个OP提供的最短路径算法无关-顺便说一句,这是不正确的,请返回并测试它并阅读问题。我不是为了工作或上学而试图解决一些问题,我也不是在寻找你为其他人的问题提供的解决方案——我在努力学习,我遇到了一个我在上面清楚解释过的不相关的问题;投赞成票:)天哪,太棒了!我不熟悉
max
min
,但这正是我所寻找的-一种从36行减少到1行的方法。在几个组合上测试了这一点,它似乎是有效的。谢谢你的帮助+1@MarkM
max
是一个基本的数学函数,它只返回其最大的参数,而
min
则相反:它返回其最小的参数,例如
max(-5,10)==10
min(-50,10,999,21,Pi)=-50
$d = max( $col_diff, $row_diff ) + 1;
$d = max( max( min( $col_diff, 4 ), 0 ), max( min( $row_diff, 4 ), 0 ) + 1;