ACM竞赛需要注意的一些编程习惯

  • Post author:
  • Post category:其他



算法竞赛入门经典第2版(刘汝佳 著)学习心得


(将会不定期更新。。。)


1.


不要在用户输入前打印提示信息,比如:

“请输入

n


”,这样不仅不会赢得友好的界面分,还会因此而减分甚至丢掉所有分数,因为这些提示信息会被当作输出数据的一部分,比标准答案多出一行或多行。注意输入与输出都要一模一样,不能多也不能少。


输出完毕后应立即终止程序。不要等待用户按键。输入输出过程是自动的


在算法中,每行输出均以回车符结束。包括最后一行,除非特殊说明,每行不应有首行空格。另外,输出的每两个数或字符应以单个空格隔开。



2..




【错误案例】:





解决办法:因为我在贴代码到ACM之前,用VS2010来编写代码以及做测试,所以自带的#include “stdafx.h”,所以贴代码的时候应该删掉



3.

java代码


如果使用java代码写,得注意这个问题





解决方法:




public

去掉或者是写成


public class main(){   }


4

.

不要让程序

“按任意键退出”,例如调用

system(

“pause”),

或者添加一个多余的


getchar().




一般在程序末尾添加


return 0






(不要忘记return 0!!).







5

.一般情况下,程序不能直接读取键盘和控制屏幕,即不要在程序中写

getch(),getche(),gotoxy(),clrscr().


6.


写程序算法的时候,应当注意乘法溢出问题,比如第二章的提示

2-10。(可以参考一下http://blog.csdn.net/leafinsnowfield/article/details/39900813)这个实例


7.


要输入很大很大的整型时,应该用

long long类型,其范围是-2的63次幂到2的63次幂-1,输出格式符号(“%lld).如果涉及long long的输入输出时,常用C/C++中的输入输出流,或自定义的输入输出方法

.


8.


文件输入输出:


并不是所有算法,竞赛都允许用程序读写文件,甚至有的竞赛允许访问文件,但不允许

freopen这样的重定向方式访问读写文件。


在比赛前必须了解文件的读写规定,是标准输入输出(即直接读键盘、写屏幕),还是文件输入输出,是否禁止用重定向方式访问文件。


数据要写到哪里?直接写题目规定的文件名加扩展名即可,

不能加路径


在算法竞赛中,应该严格遵守文件名相关规定,包括程序文件名、输入输出名,


不要弄错文件名、大小写、不要拼错文件名、不要使用相对或绝对路径














版权声明:本文为sinat_35803474原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。