繁体   English   中英

同一算法在C和PHP中的运行方式不同

[英]Same algorithm runs differently in C and PHP

我在CodeChef.com上正在练习一个问题。

https://www.codechef.com/problems/CHOPRT- >链接到我正在解决的问题。

我使用C成功解决了这个问题。

我的C代码:

#include <stdio.h>

int main() {

    int t;
    int num1;
    int num2;


    scanf("%d", &t);

    while(t--) {

        scanf("%d %d", &num1, &num2);
        if(num1 > num2)
            printf(">");
        else if(num1 < num2)
            printf("<");
        else
            printf("=");
        printf("\n");           
    }

    return 0;
}  

但是我无法使用PHP解决它:

我的PHP代码:

<?php

    $t = intval(fgets(STDIN));

    while($t--) {

        $line = split(" ", trim(fgets(STDIN)));
        $num1 = intval($line[0]);
        $num2 = intval($line[1]);

        if($num1 < $num2)
            print("<");
        else if($num1 > $num2)
            print(">");
        else
            print("="); 
        print("\n");        
    }
?>  

尽管这两个程序都可以在我的MacBook Pro上完美运行,但PHP代码未在codechef.com上运行,并给出了WA (错误答案)。 C代码可以完美运行,并且运行时间在0.00秒以内。

请给我启发,我个人认为这两个代码之间的区别应该相同,并且产生相同的输出。

我经常听到一些测试用例是错误的。我为您准备了一个案例,它将为您的C代码而不是您的PHP提供完美的结果

做这个 :

1
10  10 

请注意,两位数之间有一个以上的空格。

在这里测试 而不是预期的输出是:

=

您的输出是:

>

尽管C会在scanf搜索您键入的下一个整数时通过此测试用例,但PHP将失败,因为存在多个空格。 为了使它在PHP中工作,我确实建议您以这样的方式进行编码:两个数字之间的空格不会影响您的预期输出。

这是我相信您的PHP代码无法正常工作的唯一方法。如果确实是问题所在,那不是您的错!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM