【競賽】DBPSC深藍電腦解題競賽 發問區


Recommended Posts

  • 2 weeks later...
  • 回覆 257
  • Created
  • 最後回覆

Top Posters In This Topic

  • 2 weeks later...
  • 4 weeks later...
所以說沒有接收資料之類的?

(因為高中生程式解題都是線上寫xd)

沒有,因為那樣要不就要用Win平台

然後有著人家上傳病毒exe來執行的風險

不然就要像zerojudge直接限制M$出的東西都不能用:s

所以折衷的方案是上傳答案

雖然一樣有漏洞可以鑽= ='

鏈接文章
分享到其他網站
team5 用過……

不過 Problam A 解不開(趴

一般題有9個\n是10行

最後兩個是空的……

所以到底要怎麼串才會給我通過-口-|||

(我把可能的串法都用了……)

請善用php的內建函數


fopen
fscanf
fprintf
fclose
fgets
fread
fwrite

參考:

PHP: 讀取檔案 fgets 和 fread 的差異:http://plog.longwin.com.tw/programming/2008/08/04/php-fgets-fread-diff-example-2008

PHP Manual Filesystem Functions:http://www.php.net/manual/en/ref.filesystem.php

鏈接文章
分享到其他網站
請善用php的內建函數


fopen
fscanf
fprintf
fclose
fgets
fread
fwrite

參考:

PHP: 讀取檔案 fgets 和 fread 的差異:http://plog.longwin.com.tw/programming/2008/08/04/php-fgets-fread-diff-example-2008

PHP Manual Filesystem Functions:http://www.php.net/manual/en/ref.filesystem.php

其實我已經用了……


<?php
$fp = fopen("http://dbpsc.explogald.com/download.html?pn=0&pt=1", 'r');
while(!feof($fp)){
$strings .= fread($fp, 1024);
}
fclose($fp);

$arr = explode("\n", $strings);
foreach($arr as $data){
echo "hello, {$data}<br />";
}
?>

鏈接文章
分享到其他網站
其實我已經用了……


<?php
$fp = fopen("http://dbpsc.explogald.com/download.html?pn=0&pt=1", 'r');
while(!feof($fp)){
$strings .= fread($fp, 1024);
}
fclose($fp);

$arr = explode("\n", $strings);
foreach($arr as $data){
echo "hello, {$data}<br />";
}
?>

試試看這樣:


<?php
$fp = fopen('http://dbpsc.explogald.com/download.html?pn=0&pt=1', 'r');
$fo = fopen('output.txt','w');
while(!feof($fp)){
$strings .= fgets($fp);
fwrite($fo,'hello, ' . $strings);
}
fclose($fp);
fclose($fo);
?>

此內容已被編輯, ,由 j100002ben
鏈接文章
分享到其他網站
空白不是等於空格??

我沒有用\t

到時候也不會

下載的TXT裡面很清楚

只有一個空白

ASCII:32

突然發現我打錯了。

是空格和換行才對。

sorry

會提出這問題的原因,

就是如果是空的一行,可以被當成空字串。

另外空白也可以當作字串的一部分。

所以說

如果有兩組字串中間間隔空白

例如

abc abc

那我們要當1個字串處理還是2個字串。

另外,

當測資為

abc

abc

那我們要當作2組字串還是3組。

這些應該影響到答案,希望題目敘述可以避免掉這些有爭議的地方。

此內容已被編輯, ,由 yuscvscv
鏈接文章
分享到其他網站
突然發現我打錯了。

是空格和換行才對。

sorry

會提出這問題的原因,

就是如果是空的一行,可以被當成空字串。

另外空白也可以當作字串的一部分。

所以說

如果有兩組字串中間間隔空白

例如

那我們要當1個字串處理還是2個字串。

另外,

當測資為

那我們要當作2組字串還是3組。

這些應該影響到答案,希望題目敘述可以避免掉這些有爭議的地方。

基本上,如果是abc abc

那麼程式要不就說測資包含空白,以一行為單位

不然就是直接給你格式去切割

所以不會有上述問題

另外,判斷的檔案會忽略空行

就是說

abc

abc

abc

abc

是一樣的

為了避面一開頭的空行或是結尾空行所採取的方法

但是資料行數要一樣多唷~~~

  if(($fa = fopen($file_name,"r")) == NULL){
echo json_encode(array('error'=>"File Error: The 1st file cannot open."));
exit;
}

if(($fb = fopen('./' . PROBLEM_ROOT . $PROBLEM_DIR[$rows['submit_problem']] . '/' . $file_type[$rows['submit_protype']],"r")) == NULL){
fclose($fa);
echo json_encode(array('error'=>"File Error: The 2st file cannot open."));
exit;
}
$flag = $end = $ca = $cb = 0;
while(!feof($fa) && !feof($fb) && $flag == 0 && $end == 0){
$c = fgets($fa,1000);
while(strlen($c)==0||$c=='\n'){
if(!feof($fa))
$c = fgets($fa,1000);
else{
$end = 1;
break;
}
}
if($end == 1)
break;
else
$ca++;
$d = fgets($fb,1000);
while(strlen($d)==0||$d=='\n'){
if(!feof($fb))
$d = fgets($fb,1000);
else{
$end = 1;
break;
}
}
if($end == 1)
break;
else
$cb++;
trim($c);
trim($d);
if(strcmp($c,$d)!=0)
$flag = 1;
if($flag!=1)
if($ca%1000==0)
usleep(18750);
}
if($flag ==0 && $ca == $cb){
//Correct
}
else{
//Incorrect
}

此內容已被編輯, ,由 j100002ben
鏈接文章
分享到其他網站
試試看這樣:


<?php
$fp = fopen('http://dbpsc.explogald.com/download.html?pn=0&pt=1', 'r');
$fo = fopen('output.txt','w');
while(!feof($fp)){
$strings .= fgets($fp);
fwrite($fo,'hello, ' . $strings);
}
fclose($fp);
fclose($fo);
?>

還是錯誤呢:'(

改成這樣再上傳還是失敗:


$fp = fopen('http://dbpsc.explogald.com/download.html?pn=0&pt=1', 'r');
$fo = fopen('output.txt','w');
while($strings = fgets($fp)){
if(strlen($strings) > 0)
fwrite($fo,'hello, ' . $strings);
}
fclose($fp);
fclose($fo);

---------------------------- 成功的方法


$fp = fopen('http://dbpsc.explogald.com/download.html?pn=0&pt=1', 'r');
$fo = fopen('output.txt','w');
while($strings = fgets($fp)){
if($strings != "\n")
fwrite($fo,'hello, ' . $strings);
}
fclose($fp);
fclose($fo);

就能解出來了……

結果要避開 \n 不然會多算一次進去

此內容已被編輯, ,由 弦夜
找到處理方法……
鏈接文章
分享到其他網站
1. 全對:題數多者為勝,少者為負。

2. 困難題對:題數多者為勝,少者為負。

3. 簡單題對:題數多者為勝,少者為負。

4. Penalty少者為勝,多者為負。

話說剛剛看了規則.........

為什麼我覺得去submit困難題會讓Penalty變成很吃虧......

鏈接文章
分享到其他網站

請登入後來留意見

在登入之後,您才能留意見



立即登入