【发布时间】:2014-07-19 19:43:13
【问题描述】:
(由于比赛结束,无法粘贴确切的问题,我无法访问该问题。抱歉。)
您好,最近我参加了一个编程竞赛(PHP)。我在我的 PC 上测试了代码并得到了所需的输出,但是当我在比赛网站和 ideone 上检查我的代码时,我得到了错误的输出。这是第二次发生同样的事情。相同的 PHP 代码,但输出不同。
它正在从命令行获取输入。目的是带上接触字符'A','B','C','a','b','c'的子串。
例如:将字符串“AaBbCc”视为 CLI 输入。 子串:A,a,B,b,C,c,Aa,AaB,AaBb,AaBbC,AaBbCc,aB,aBb,aBbC,aBbCc,Bb,BbC,BbCc,bC,bCc,Cc。
Total substrings: 21 这是正确的输出。
我的机器:
Windows 7 64 位 PHP 5.3.13(Wamp 服务器)
以下是代码:
<?php
$stdin = fopen('php://stdin', 'r');
while(true) {
$t = fread($stdin,3);
$t = trim($t);
$t = (int)$t;
while($t--) {
$sLen=0;
$subStringsNum=0;
$searchString="";
$searchString = fread($stdin,20);
$sLen=strlen($searchString);
$sLen=strlen(trim($searchString));
for($i=0;$i<$sLen;$i++) {
for($j=$i;$j<$sLen;$j++) {
if(preg_match("/^[A-C]+$/i",substr($searchString,$i,$sLen-$j))) {$subStringsNum++;}
}
}
echo $subStringsNum."\n";
}
die;
}
?>
Input:
2
AaBbCc
XxYyZz
Correct Output (My PC):
21
0
Ideone/Contest Website Output:
20
0
【问题讨论】:
-
代码的用途是什么?它正在读取文件,因此可能取决于服务器响应...
-
它正在从命令行获取输入。输入必须是字符串。目的是查找包含字符 'A','B','C','a','b','c' 的子字符串。
-
那么命令行参数是什么?您确定您给出的论点与竞赛网站相同吗?为什么不直接在
$t = fread($stdin,3);之后回显$t,看看它在本地机器和服务器上产生了什么。 -
我在这里没有看到任何错误。第一件事 - 你为什么使用 PHP 4?第二个 - 你对 Ideone/Contest 测试环境了解多少?
-
联系比赛负责人不是更方便吗?
标签: php