目錄
PTA簡介
PTA全名:程式設計類實驗輔助教學平臺,網址:https://pintia.cn 是一個提供線上程式試題測評的教學平臺。
PTA提交node.js程式碼遇到的坑
-
題目 以上省略題目內容... 要求的輸入格式和輸出格式 輸入格式:輸入第1行給出正整數K (≤100000);第2行給出K個整數,其間以空格分隔。 輸出格式:在一行中輸出最大子列和。如果序列中所有整數皆為負數,則輸出0。
-
答題 編譯器選擇Javascript(node)提交了如下程式碼,看下測試結果:
var k = 6;
var arr = [-2, 11, -4, 13, -5, -2];
function testFn(k, arr) {
var total = 0;
var maxNum = 0;
for(var i = 0; i < arr.length; i++) {
var arrI = arr[i];
total += arrI;
if (total < 0) {
total = 0;
continue;
} else if( total > maxNum){
maxNum = total;
}
}
return maxNum;
}
console.log(testFn(k, arr));
複製程式碼
-
測試結果 明明本地測試通過後的程式碼,總是提示答案錯誤。猜測可能是沒有正確讀入輸入。
-
看下官方的常見問題解答(FAQ)
*我應該從哪裡讀輸入,另外應該輸出到哪裡? 如果沒有特別說明,你的程式應該從標準輸入(stdin,傳統意義上的“鍵盤”)讀入,並輸出到標準輸出(stdout,傳統意義上的“螢幕”),不要使用檔案做輸入輸出。由於系統是在你的程式執行結束後開始檢查輸出是否是正確的,對於有多組測試資料的輸入,可以全部讀入之後再輸出,也可以處理一組測試資料就輸出一組。
PTA提交node.js程式碼的正確姿勢
使用process.stdin讀入測試程式的輸入值作為測試程式的引數,使用process.stdout或者console.log輸出給標準輸出。 示例程式碼如下
var buf = '';
var k;
var arr;
process.stdin.on('readable', function() {
var chunk = process.stdin.read();
if (chunk) buf += chunk.toString();
});
process.stdin.on('end', function() {
buf.split('\n').forEach(function(line, i) {
// 第1行輸入
if (i === 0) {
k = parseInt(line);
// 第2行輸入
} else if (i === 1) {
arr = line.split(' ').map(function(x) { return parseInt(x); });
// 在這裡使用輸入作為引數執行測試程式
console.log(testFn(k, arr));
}
});
});
// 測試程式
function testFn() {
// 在這裡編寫測試程式
// ...
// 使用process.stdout.write或者console.log輸出測試結果
console.log('測試成功');
}
複製程式碼