一道ACM题目的反思

大三本科,成绩还算不错(很不自谦的说),所有编程实验做的津津有味,亦常为同学捉刀,最近的图形学实验写了4600行c++代码,自命编程能力还是不错的。可自大一来尝试ACM便屡屡受挫,郁郁不得志,中途因课业紧张未能坚持(压根没正儿八经的做过几道题),也自觉智商平平,无甚希望。

最近在考研与工作间犹豫不决,无聊间注册了ZOJ,A+B的问题粘贴了一下,哦,过了,证明系统正常,立马做第二题,虽然没能严格证明算法的正确性,但很快,代码也通过了。对于不能严格证明其正确性的解答,总感觉是太侥幸了,要不得。但第三题(crashing balloon)还是存在这种心理,结果屡次wrong answer,遂觉不能再这么碰运气,得有能严格证明的算法,而且程序必须考虑各种情况,所以不断修改,增删,最终,代码200多行了,仍是wrong answer,尽管测试没发现问题。

先前做的软件(没有文档,暂且这样称呼吧)能够运行,就觉没问题了,足见测试实非易事,而ACM的问题对与错,真跟0与1一般,解法多样,但所有的结论却必得相同。所以此前的各种程序只是看起来正确罢了,可代码到达一定行数之后,又有谁敢保证其正确性呢。正应了哪本经典书籍里一句话:写程序的本质就是控制复杂性。而我,总算自认为很牛B,编程技巧娴熟,无论写的代码多复杂都能理得顺,能调试之并最终验证其正确性,而后才知只是打字娴熟而已,自己写的那么多那么啰嗦,给自己挖了个大深坑,累的站都站不起来,还如何跳的出去。编写一个清晰而确定的函数实非易事。

憋不住,看一下别人的解答,惊奇的发现他们写的也就40行,精辟。看来用做软件的态度做ACM还真不行,难过,piapia的敲起来了,主要还是没啥练习,然后又老想着问题会很复杂,至少实现起来不简单,所以最后越来越复杂,直至在一个思路上崩溃掉。当然,ACM牛人确实牛,但那些个代码也不缩进啥的,实在看起来不很爽。

最后的一个问题也是我最不明白的一个问题,这题的输入数据可能很大呀:100!,基本类型放不下呀,为什么不考虑呢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值