OJ平臺不允許複製,測試數據很多怎麼辦?——C/C++輸入輸出重定向

OJ平臺不允許複製,測試數據很多怎麼辦?——C/C++輸入輸出重定向

在一些OJ平臺寫題目時,一些程序要求輸入大量的數據,手動一個一個輸入極其不方便,還特別浪費時間,尤其是在OJ比賽或考試中,時間更爲寶貴。好的方法就是把輸入事先存在文件中,然後讓程序自己讀取,程序的結果也輸出生成在另一個文件裏,方便方便直觀比較。

主要方式是在程序第一行定義:

#define LOCAL

然後 在讀取數據之前定義:

#ifdef LOCAL
	freopen("看電視.in","r",stdin);//打開文件
	freopen("看電視.out","w",stdout);//寫文件
#endif

return 0之前添加

#ifdef LOCAL
fclose(stdin);
fclose(stdout);
#endif

真正提交時候刪除首行的

#define LOCAL

就可以啦

舉個例子:

#define LOCAL
......
	 
int main()
{
//以下是調試的文件讀取方式,在真正提交時候刪除文件第一行的#define LOCAL即可
#ifdef LOCAL
	freopen("看電視.in","r",stdin);
	freopen("看電視.out","w",stdout);
#endif
    
	int n;
    cin >> n;
	printf("%d\n",n);
    
#ifdef LOCAL
	fclose(stdin);
	fclose(stdout);
#endif
    
	return 0;
}

使用這樣的輸入輸出重定向,在面對具有較多數據的測試輸入點時,能夠節省一個個輸入數據的時間。PAT這樣的考試,考場上是不能複製的,所以這種方法就顯得尤爲重要。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章