piekenius' Blog

oj通过之后

Word count: 1.2kReading time: 3 min
2023/05/17

在14:25时,E题从答案错误 AC:60%变成正确的那一瞬间,我的心情除了不可置信还是不可置信。很难相信在前一个晚上还在A题AC10%挣扎痛苦的我,竟然都到E题AC了。其中很大程度上都需要感谢崔佬对我长达一个小时的当面帮助和纠错,分享他的思路。

这是第一个自己学了编程语言之后做出的半完整项目,其中骂了oj千千万万遍,自己两个晚上一直在发现新的错误和修改新的问题,当面对质之后才发现自己还有很多问题没有解决,并且debug效率低下。幸好中途没有太大脑宕机,大部分问题地解决自己都跟得上思路,再一次感叹男生的思维缜密且活跃,即使失败了也不会气馁放弃,只是平常淡定地思考策略。果然信息闭塞是学不好计算机的(点头),以后一定要多多和班上男生取经,多多广泛交流。

总结一下自己出现的问题和解决策略:

  • 在没有出现oj之前一直困扰自己的问题就是二维数组不能用全部用全局变量定义,必须至少有一维是常量才行为此我直接把模块化编程这个选项去掉,直接在函数里进行用户输入操作,并进行一系列游戏流程。
  • oj发布后,输入测试用例要读清楚,并把相关的文字提示注销。
  • 用了指针代表游戏是否结束的标志,但会出现内存超限(指针找不到所指代内容)。其实自己指针内容没怎么学好,老师讲的课一如既往地听不懂,翁恺的指针课反反复复睡着了七八次最后甚至拿来当失眠灵丹妙药,效果极佳。为此不用指针改用全局变量。
  • 问号标记格子和没点开格子具有同等效力。之前一直没有把问号格子当回事。
  • 直接把i和j当作全局变量来使了,出现很多问题。为此遍历用的临时变量还是用到了再定义方便很多。
  • 胜利的条件判断之前一直判断错了,还搞了一个很麻烦的THUN-markk==THUN什么的现在想想真的是纯nt,p用没有。为此只需要没点开的格子(这里包括问号标记的,标记的和点状的)等于THUN即可。
  • 判断游戏是否结束还苦恼了我一下,为此把flag(游戏结束的判断)放在打印表棋盘函数里贯穿始终,使用do-while循环判断flag是否等于1(进行中),是则继续输入,不是则返回主函数,主函数直接return 0.
  • 感叹号、问号、取消标记时输出端记录雷数变化其实是一个非常普通的条件判断,当时脑子秀逗了越想越复杂,今天改好。为此是感叹号的时候,问号标记时标记数才减一;取消标记同理,其他情况则值更改格子状态,标记数不变。(如问号改取消标记,标记数不变)当然再重复一次操作标记/问题标记/取消标记操作不会发生变化,如果处理不当会使雷数发生变化。
  • 双击只对数字状态格子生效为数不多的自己发现的问题哈哈哈。
  • 双击时周围有标错的雷,只打开应该是雷的格子,其他格子状态不变
  • 已经点开的格子状态不会再变化,无论是改感叹号还是改问号都不会生效。

大概是这些,想起来再补充。de着de着发现,最后的大头一般都是小细节,真的是细节决定成败。

高强度讨论一个小时,还吃了一个冰淇淋,甜死了!!!以后再也不吃西餐厅的冰淇淋了,自己以前是怎么喜欢吃西餐厅的冰淇淋的。

今天已经不想干任何事了,但是还有三重积分和大物在等着我补TT期末和六级也差不多来了,忙起来了。自己假期还没想好干什么,但是独自旅行的愿望很强烈!还有摆摊学做菜做饭或者在家自己试着做点糕点。

CATALOG