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 而已,
不熟的人還是用前二種就好,別在這種方方花功夫。

edisonx 發表在 痞客邦 PIXNET 留言(0) 人氣()