将JAVA程序转换为PHP代码

我在JAVA中有以下程序。</ p>

  private static int  frogJump(int [] arrEl,int postion){
/ **路上找到的叶子的标记数组。 * /
boolean [] leafArray = new boolean [postion + 1];

/ **青蛙需要的总步数。 * /
n步骤=位置;

for(int i = 0; i&lt; arrEl.length; i ++){

/ **如果青蛙需要叶子,它早先不存在。 ** /
if(postion&gt; = arrEl [i]&amp;&amp;!leafArray [arrEl [i]]){

/ *找到Mark leaf * /
leafArray [arrEl [i]] = true ;

/ **逐步减少(发现一次跳跃)。 * /
n步 - ;
}

if(steps == 0&amp;&amp; arrEl [i] == postion){
return i;
}
}

返回 -1;
}
</ code> </ pre>

我想用PHP转换。
现在我所做的是</ p>

   function solution($ A = [],$ Position){

$ StonesArray = array();

$ StonesArray [TRUE] = $ Position + 1;

$ steps = $ 位置;

for($ i = 0; $ i&lt; count($ A); $ i ++){

echo“&lt; pre&gt;”;
print_r($ StonesArray);

if($ Position&gt; = $ A [$ i]&amp;&amp;!$ StonesArray [$ A [$ i]]){

$ StonesArray [$ A [$ i]] = true; \ n

$步骤 - ;
}

if($ steps == 0&amp;&amp; $ A [$ i] == $ Position){
return $ i;
} \ n}

返回-1;
}

$ GetSolution = solution([3,2,1],1);
echo“&lt; pre&gt;”;
print_r($ GetSolution); \ n </ code> </ pre>

上面的程序应返回3.但在我将程序转换为P之后 HP语言没有返回预期值。 </ p>

我确信我已经做了一切正确的事情,除了转换下面的行</ p>

  boolean [] leafArray = new boolean [postion + 1]  ; 
</ code> </ pre>

如何用PHP编写这一行?</ p>
</ div>

展开原文

原文

I have below program in JAVA.

private static int frogJump(int[] arrEl,int postion) {
        /** Marker array for the leaf found on the way. */
        boolean[] leafArray = new boolean[postion+1];

        /** Total step needed for frog. */
        int steps = postion;

        for(int i = 0; i<arrEl.length; i++) {

            /** if leaf needed for frog and it does not exist earlier. **/
            if(postion>=arrEl[i] && !leafArray[arrEl[i]]) {

                /* Mark leaf found */
                leafArray[arrEl[i]] = true;

                /** Reduce the step by one(coz one jump found). */
                steps--;
            }

            if(steps == 0 && arrEl[i]==postion) {
                return i;
            }
        }

        return -1;
    }

Which i want to convert in PHP. Till now what i have done is

function solution ($A = [], $Position) {

    $StonesArray = array();

    $StonesArray[TRUE] = $Position + 1;

    $steps = $Position;

    for($i = 0; $i< count($A); $i++) {

        echo "<pre>";
        print_r($StonesArray);

        if($Position >= $A[$i] && !$StonesArray[$A[$i]]) {


            $StonesArray[$A[$i]] = true;


            $steps--;
        }

        if($steps == 0 && $A[$i] == $Position) {
            return $i;
        }
    }

    return -1;
}

$GetSolution  = solution([3,2,1], 1);
echo "<pre>";
print_r($GetSolution);

above program should return 3. but after i have converted the program to PHP language its not returning the expected value.

I am sure I have done everything correct except converting the below line

boolean[] leafArray = new boolean[postion+1];

How to write this line in PHP?

doukui4786
doukui4786 这条线现在看起来不错,通常你应该逐步比较或调试你的代码,看看与原始代码的区别。如果您使用当前代码更新问题,我将会看一下,但这不是聊天,如果我们继续在评论中讨论,主持人可能会将此对话移至聊天频道。:)
大约 3 年之前 回复
drngnh708353
drngnh708353 是的我写了$StonesArray=array_fill(0,$position+1,false);但仍然没有得到我想要的输出。无论如何,。谢谢你的时间..但上次你可以检查我是否正确转换了PHP代码?
大约 3 年之前 回复
douhuan1937
douhuan1937 好的是你正在使用的数组,它在原始代码中称为leafArray,但你调用它$StonesArray所以它应该是$StonesArray=array_fill(0,$position+1,false);(如果并非所有变量在您的代码中都有不同的名称,则会更容易比较):)
大约 3 年之前 回复
dongshi6844
dongshi6844 ,我试过这个。但仍然没有得到我想要的答案。我们需要弄明白的事情是真的错了。我需要指定此行array_fill(0,$position+1,false);到$leafArray?比如$leafarray=array_fill(0,$position+1,false);像这样??
大约 3 年之前 回复
dongzhuxun5136
dongzhuxun5136 你看到我的评论,我编辑了几次抱歉...array_fill(0,$position+1,false);创建一个所有值都设置为false并且应该与Java数组匹配的数组。
大约 3 年之前 回复
dtnmuyoiw680512744
dtnmuyoiw680512744 那是我不明白的。我该怎么写呢?
大约 3 年之前 回复
duanbiao4035
duanbiao4035 $StonesArray[TRUE]=$Position+1;没有意义,你真的只需要一个数组并将$Position+1次falses放入其中。
大约 3 年之前 回复
dourou9477
dourou9477 MetaPhox,仍然没有得到预期的输出..让我知道我是否已正确转换程序..我正在编辑整个问题,
大约 3 年之前 回复
dongtaijue1578
dongtaijue1578 那么如果那个代码是Java那么新的布尔[postion+1];将创建一个大小为postion+1的bool数组,并最初将所有元素设置为false。如果你想在php中实现相同,你只能使用$leafArray=array_fill(0,$position+1,false);
大约 3 年之前 回复
doushi5752
doushi5752 我无法理解boolean[]leafArray=newboolean[postion+1];将成为$leafArray=array();在php中,我们可以清楚地看到他们已经分配了一些值。或给定数组的大小
大约 3 年之前 回复
drgovyk64676
drgovyk64676 ,谢谢你的理解,但我自己也在学习php,所以请你告诉我如何定义这个大小位置+1的数组并包含布尔值?
大约 3 年之前 回复
dscc90150010
dscc90150010 是的,它应该工作@Jhon。$leafArray=array()将创建一个将根据需要扩展的数组,但原始Java版本为此数组保留了+1个空格。在PHP中,您不需要这样做。
大约 3 年之前 回复
dongpi9164
dongpi9164 ,你确定吗?而不是boolean[]leafArray=newboolean[postion+1];只需$leafArray=array();将工作??,因为他们已经添加了一些值,请检查。
大约 3 年之前 回复
doutiaosu2310
doutiaosu2310 你只需要在$StoneArray中存储布尔值,就是这样。boolean[]leafArray=newboolean[postion+1]表示大小位置+1的数组,包含布尔值。
大约 3 年之前 回复
doutandusegang2961
doutandusegang2961 让我编辑我的问题然后,
大约 3 年之前 回复
doulvli9462
doulvli9462 我认为这是C#,无论如何我认为你不能用PHP创建一个预定义大小的数组。通常你不需要。只需使用$leafArray=array();
大约 3 年之前 回复
dpba63888
dpba63888 查看源代码说它突出了java(它有类syntaxhighlighterjava)
大约 3 年之前 回复
douchao1879
douchao1879 检查codesolution.org/frog-jump-through-leaves-problem上的代码
大约 3 年之前 回复
dongmu1914
dongmu1914 这不是C.我无法确定它是什么(C#?C++?)请确定自己并更正标签。
大约 3 年之前 回复

1个回答



我刚刚将原始Java代码翻译成PHP 1:1,大部分内容都可以按原样使用,只需稍加修改,看看这个 示例:</ p>

 函数frogJump(数组$ arrEl,$ postion){
/ **在路上找到的叶子的标记数组。 * /
$ leafArray = array_fill(0,$ postion + 1,false);

/ **青蛙需要的总步数。 * /
$ steps = $ postion;

for($ i = 0; $ i&lt; count($ arrEl); $ i ++){

/ **如果青蛙需要叶子,它不会 早先存在。 ** /
if if($ postion&gt; = $ arrEl [$ i]&amp;&amp;!$ leafArray [$ arrEl [$ i]]){

/ *找到Mark leaf * /
$ leafArray [ $ arrEl [$ i]] = true;

/ **逐步减少(发现一次跳转)。 * /
$步骤 - ;
}

if($ steps == 0&amp;&amp; $ arrEl [$ i] == $ postion){
return $ i;
}
}

返回-1;
}
</ code> </ pre>

print_r(frogJump([3,2,1],1)); </ code> outputs 2 </ code>。</ p>

我还编译了Java代码,输出也是 2 </ code>,所以对我来说似乎是正确的? 使用 System.out.println运行(frogJump(new int [] {3,2,1},1)); </ code> </ p>
</ div>

展开原文

原文

I just translated your original Java code to PHP 1:1, most of it can be used as is with little change, look at this example:

function frogJump(array $arrEl, $postion) {
    /** Marker array for the leaf found on the way. */
    $leafArray = array_fill(0, $postion+1, false);

    /** Total step needed for frog. */
    $steps = $postion;

    for($i = 0; $i<count($arrEl); $i++) {

        /** if leaf needed for frog and it does not exist earlier. **/
        if($postion>=$arrEl[$i] && !$leafArray[$arrEl[$i]]) {

            /* Mark leaf found */
            $leafArray[$arrEl[$i]] = true;

            /** Reduce the step by one(coz one jump found). */
            $steps--;
        }

        if($steps == 0 && $arrEl[$i]==$postion) {
            return $i;
        }
    }

    return -1;
}

print_r(frogJump([3,2,1], 1)); outputs 2.

I also compiled the Java code and the output is also 2, so it seems correct to me? Run with System.out.println(frogJump(new int[]{3,2,1}, 1));

duangou2028
duangou2028 我想如果我的答案解决了你的问题,你可以接受它并且问题已经结束。 如果您还有其他问题,请在评论中提问或创建新问题。
大约 3 年之前 回复
down00111
down00111 我没有足够的代表。 访问聊天。
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐