CSP:字符画 总结

考试时候毫无头绪,平时自己静下心来写还花了两三个小时,CSP真的不简单啊。现在来总结总结这个题,看看到底是哪里难到了我。

吐槽

  1. 题目解释的时候,用正常的序列在那儿解释,到了题目输出的时候,直接变成了ASCII码,人都给我看傻了。主要是没有ASCII码对照表,当时人一懵,就看不懂他写的啥意思了。然后题目中的48,ASCII中竟然是把4和8分开输出的,当时就找了好半天,感觉这输出和题目说的对不上呢。
  2. 题目中讲了38来修改字的颜色,48来修改背景的颜色,讲了一大堆,到了后面发现只用修改背景颜色。害,废话真多。
  3. 原来题目长的原因就是因为废话太多。
  4. 总之,我太菜了😵

思路

​ 其实如果冷静读题,能把题目中那么多废话刨开,然后把ASCII码和结果对应搞明白,这个题并不是很难的。总的流程无非就是输入所有的RGB配色,然后通过分块的方式进行每一块RGB计算(感觉当时写数独对分块操作颇有心得)。然后再是按照分块的顺序,通过双循环来输出就行了。

zz错误以及一些重要的坑!

  1. 最最重要的一个错误 : 在输出反斜杠(\) 时,没有采用忘记需要通过转义序列来输出,导致最开始无法输出结果。也是懵逼了好久才发现这个错误。与此相类似的是输出单引号(‘)和双引号(“)时也需要转义序列,以后要注意。
  2. 在处理RGB到字符串的时候,开始是分号的位置放置的不合适。后来是发现对单个颜色值的每一位,我前面都加了一个分号,这样是不对的,应该只用在最高位前面加一个分号即可,感觉当时写糊涂了。
  3. 每一行的末尾开始的时候忘记判断是否需要重置。重置之后发现自己又多加了一个空格,导致出错。
  4. 重要tips:写程序的时候,尤其这种题目长,比较复杂的模拟题,理清题目很重要。用草稿纸和画图的方式来加快自己的理解。并且尽量把自己处理的步骤以及边界条件罗列下来,防止自己脑抽。在coding的过程中,最好还是多写一点注释,这样能提醒自己,我现在做到哪一步了,可以更加明确处理的思路,然后也能提醒自己当时写的对应位置的特殊情况。也方便自己出错的时候回来检查。
  5. 申明全局变量:在程序中,那种放置大量元素的结构,尽量声明为全局变量,大小可以根据题目提示的数据范围,选择最大的即可。之前我一直觉得,一开始就声明一个那么大的何必呢,根据题目的输入来声明对应大小不久可以了,然鹅这道题让我意识到了全局变量的重要性。因为全局变量存储在自由分配区,而局部变量存储在栈区。按照室友的说法,一般这种考试,你声明的全局变量基本都装得下,但是如果你声明的是局部变量,那么栈的空间是有限的,运行的时候就可能出现栈满这种情况,导致运行错误。所以还是尽管使用全局变量吧。

说点没用的

​ CSP这段时间刷了一些第三题/第四题,一方面感觉CSP确实挺难的,但另一方面也发现自己还是有能力做出来这些题的。经过这段时间的练习,感觉做题能力有了一点提高,对C++做题的使用也更熟练了。所以继续加油吧!后面做题尽量自己写一些测试用例,毕竟考试的时候没办法提交看到你跑出来的结果呀。

0%