目前差不多已经刷了接近三百多道题,还是谈谈在解题过程中遇到的一些问题吧。
1.最常见的一个错误就是根据样例来设计程序时,陷入太深以至于将自己程序中的一些变量直接替换成样例输入中的数值,这样本来可以全对的题只能得一部分分值。建议在解题过程中,将这些变量用文字描述出来,不然到后面大脑短路糊里糊涂的把常数代替成了变量。举个例子,题目说要输入N个用户,但样例给了7个用户,那么有些人在编程过程中忘记了N的意义,会直接用7来代替,当然这也能通过样例,变量数目少的话比较容易发现错误,但变量一多就有点难以发现问题所在。
2.在设计程序时,能用数组来表示相同类型的数据时尽量用数组来映射表示。举个例子,题目说要计算每个学生‘C’,‘M’,‘E’,‘A’四门成绩的排名时,千万不要一个一个算每一门成绩的排名,而是用数组+结构体的形式存储这些科目的相关信息(包括排名分数id等),若涉及到优先权,直接将优先权作为属性放到结构体中便是。
3.在解决某些需要查询操作的题目时,往往声明结构体数组,数组下标与数组元素的某一属性比如说id一致,这样在查询时就很方便了。还有在输出某些信息时一定要确定它们是不是被真正修改了的,有可能你修改的只是个副本,而你装输入信息的那些容器中的原先内容并没有改变。举个例子,声明一个队列,输入的数据你用数组来装,在处理数据时你觉得应该用队列来解决,但是入队的只是数组元素的一个副本,你去修改队中元素并没有什么影响,所以你需要从队中元素提取一些信息然后关联到原数组中去,比如说队中元素的id,那么可以用这个id去索引数组元素,然后去改数组元素的相关内容。总结就是用什么装的数据,就要改什么中的数据,中间容器只是一个辅助。