作者chchwy (mat)
看板C_and_CPP
标题Re: [分享] ACM测资方便方法
时间Thu Sep 1 17:33:03 2011
其实我最喜欢的方法是这样子
因为 UVa 有提供 -DONLINE_JUDGE 的编译选项
所以只要写
int main() {
#ifndef ONLINE_JUDGE
freopen("100.in", "r",stdin);
freopen("100.out","w",stdout)
#endif
// ...other code
}
在本机测试就是用档案I/O,送上去judge也不用修改任何一行code
※ 引述《diabloevagto (wi)》之铭言:
: 昨天再跟朋友聊天刚好提到acm题目都如何测试
: 他讲了一个方法挺不错的
: 给大家参考看看
: 首先假设我编译出来的exe档是
: D:\Dropbox\C++\ACM\10141\bin\Debug\10141.exe
: 然後要测试的资料都放在一个txt档内
: D:\Dropbox\C++\ACM\10141\bin\Debug\aaa.txt
: 这两个档案我放在同一个资料夹底下
: 因为我懒的打路径
: 接着开cmd档案下命令
: D:\Dropbox\C++\ACM\10141\bin\Debug>10141.exe < aaa.txt
: 重点是在於那个<
: 这观念我猜应该是资料流的意思
: 给大家参考看看吧
: 在档案内一样是用cin
: 这样就不用一个一个key进去
: 也不需要用读档的方式了
--
「人生有很多个十年,但如果刚好是十八岁到二十八岁,那就是一辈子了。」
「我们常常高估十年後能做的事,却忽略一年内能做的事」
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.45.105.118
※ 编辑: chchwy 来自: 114.45.105.118 (09/01 17:37)
1F:→ diabloevagto:我之後是一样用ifdef不过後面加的是WIN32 09/01 17:55
2F:→ diabloevagto:我改成ONLINE_JUDGE的话,要在编译那在多加东西吧? 09/01 17:55
3F:→ diabloevagto:我弄成功了!我会用WIN32是因为我自己用win,uva是 09/01 18:02
4F:→ diabloevagto:LINUX! 09/01 18:02
我这样写就是不用设定也不用检查,而且Win,Linux通吃阿
你去看UVa的送题页面就有写明编译参数
C++ 4.1.2 - GNU C++ Compiler with options: -lm -lcrypt -O2 -pipe -DONLINE_JUDGE
仔细看,我用的是#ifndef 不是 #ifdef
只要被包在#ifndef ONLINE_JUDGE里面的程式码
送交的时候就不会被编进去
※ 编辑: chchwy 来自: 114.45.105.118 (09/01 18:30)
5F:→ diabloevagto:真的耶...我看错了,请问为什麽加上-DONLINE_JUDGE 09/01 18:42
6F:→ diabloevagto:就可以用这个方法啊?两个差了一个D 09/01 18:42
7F:→ james732:-DONLINE_JUDGE 类似在程式里加上 #define ONLINE_JUDGE 09/01 18:44
8F:→ james732:所以可以用 #ifndef(if NO define) ONLINE_JUDGE 来控制 09/01 18:45
9F:→ diabloevagto:了解,感谢喔 09/01 18:46
10F:推 walker2009:推这篇 09/04 02:59