ACM 沒有特別說明時,通常都是以多測資方式進行,
以An Online Judge System For Beginners 之 a001. 哈囉 為說明,
範例輸入 :
world
C++
mary
範例輸出 :
hello, world
hello, C++
hello, mary
C 的寫法如下:
// =================================
#include <stdio.h>
int main()
{
char buffer[2000];
// while(scanf("%s", buffer)!=EOF) // 這個比較好
while(scanf("%s", buffer)==1) // 引數配對為1
{
printf("hello, %s\n", buffer);
}
return 0;
}
// =================================
C++ 寫法如下:
// =================================
#include<iostream>
using namespace std;
int main()
{
string s;
while(cin >> s){
cout << "hello, "<< s << endl;
}
return 0;
}
// =================================
但測試結果,用 cin 竟活生生比 scanf 慢了 2ms,
這結果還真耐人尋味..
但應盡可能避掉使用
while(1){
string ss;
cin >> ss;
}
這種方式,
雖是多測資,但不代表資料永遠輸入不完,
這樣的程式只會陷入 dead loop,結果只會是 TLE 而已,
不熟的人還是用前二種就好,別在這種方方花功夫。
留言列表