序
在拙文 《高手看了,感觉惨不忍睹——关于“【ACM】杭电ACM题一直WA求高手看看代码”》中,我对ACMer们的一些代码“惯例”发表了我的看法, librazy网友在评论中给出了他的一些见解,我予以了相应的回复。
我个人认为这种讨论是极其有益的,双方取得了一些基本共识,对分歧之处,也都说明了自己的理由,以待读者自行判断。无疑,这是一次高水准的讨论。
感觉这些讨论散见于“评论”中有些可惜,故此稍作整理,以利于网友阅读。需要说明的是,整理过程中我做了一些润色和补充。如果librazy网友感到有必要,欢迎也进行必要的润色和补充。
基本共识
我和librazy网友一致认为:
因为竞赛是为了“赢”对手,但代码绝对不是像卫生纸那样一次性使用的。
此外我和librazy网友都一致认为宏名应该大写,不应该无故违背C语言长期形成的这种“公序良俗”。
以下则是我和librazy网友对某些问题的“各自表述”:
关于ACM竞赛
librazy:
garbageMan:
关于在源文件头部写无用的#include预处理命令
librazy:
garbageMan:
关于main()定义是否应该写不需要的形参
librazy网友:
garbageMan:
关于使用什么样的数据结构
librazy:
garbageMan:
对此librazy网友表示同意:
关于flag标识变量
librazy:
garbageMan:
关于数组清零及外部变量(“全局变量”)
librazy:
garbageMan:
“没记错的话《骗分导论》还是哪篇集训队、省队论文有分析过数组操作的时间复杂度(貌似结论是都差不多……反正怎么做都比读入快并且不影响时间复杂度。数组反倒是放全局比较好……要不然还没有MLE就爆栈了。”
关于数组定义
librazy网友:
garbageMan:
关于“一main到底”的问题
librazy:
garbageMan:
关于算法竞赛与编程的区别
librazy:
garbageMan:
“从”还是"不从"?
这条看法来自BMan、网友:
garbageMan: