gpt4 book ai didi

php - 算法简化

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:46:03 25 4
gpt4 key购买 nike

这个问题是关于其他人之前发布的另一个问题:

PHP: Determining Grid Count Between 2 Grids .

注意:理解上面的问题对于本题来说不是必须的;我只是想提供它以供引用和其他上下文。

我能够解决问题,但我不喜欢我的解决方案 - 它显然是重复的,我知道它可以简化,但我的大脑现在太炸了,看不到它。在我得到一些解决方案之前,我不能屈服并上床 sleep 。

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

// Note: $col_diff and $row_diff will always be integers between 0 and 4

if ($col_diff==4) {
$d = 5;
}
elseif ($col_diff==3) {
if ($row_diff==4)
$d = 5;
else
$d = 4;
}
elseif ($col_diff==2) {
if ($row_diff==4)
$d = 5;
elseif ($row_diff==3)
$d = 4;
else
$d = 3;
}
elseif ($col_diff==1) {
if ($row_diff==4)
$d = 5;
elseif ($row_diff==3)
$d = 4;
elseif ($row_diff==2)
$d = 3;
else
$d = 2;
}
elseif ($col_diff==0) {
if ($row_diff==4)
$d = 5;
elseif ($row_diff==3)
$d = 4;
elseif ($row_diff==2)
$d = 3;
elseif ($row_diff==1)
$d = 2;
else
$d = 1;
}

echo $d; // Correct!

我怎样才能简化它并消除冗余?

这是我设想的优化结构的样子,但它显然有缺陷:

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 的距离(看看类似的数字如何形成以右下角为中心的“正方形”)。

或者:

cell = Max( x, y ) + 1

...有点简单,嗯?

将此视为证据:

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;

关于php - 算法简化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23536284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com