我在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秒内运行。
请告诉我两个相应代码之间的区别,我个人认为,这些代码应该是相同的,并且也会产生相同的输出。
答案 0 :(得分:3)
我经常听到一些测试用例是错误的。我有一个角落案例,可以为您的C代码提供完美的结果,但不会为您的PHP提供
这样做:
1
10 10
请注意,两位数之间有多个空格。
我测试了它here。 而不是预期的输出:
=
你的输出是:
>
虽然C会通过此测试用例,因为scanf会搜索您输入的下一个整数,但PHP会失败,因为有多个空格。 为了使它在PHP中工作,我确实建议你以这样的方式编码,即两个数字之间的空格不会影响你的预期输出。
这是我相信你的PHP代码无法工作的唯一方式。如果这确实是问题,那不是你的错!