zoukankan      html  css  js  c++  java
  • 2019.7.15刷题统计

    以后几天主要刷入门组原来不会的题。

    第一题:1036

    原来代码:

    可以看出红框里的代码全部没有审清题意。

    今天看了dgc的代码,发现循环只需要从3循环到n-1,而且根本没必要把上车人数、下车人数、当前人数全部记录下来,更不需要编写一个函数做这项工作。

    后来我再提交的时候错误一个点,最后发现b的循环需要从0开始。

    今天发现入门组的题目都没有我想的那么复杂,看问题有时需要看简单一点儿,这样可以使思路更明确,做题速度也会加快。

    同时做题提交后发现错误时,应该再读一遍题目,并改进代码,绝对不能放弃。

    AC代码:

    第二题:1041

    原来代码:

    这道题可以说是递归中最简单的题目之一了,但是当时还是错了。当时有两处思路错误:

    ①既然每个状态只与前一个状态有关,而且用过一遍以后再也不会用了,就只需要用一个变量记录上一个状态,不需要开数组,浪费了空间(这并不主要)

    ②循环边界条件有误:第一个循环应该是for(int i=1; i<=n-p; i++),第二个则应该是for(int i=n-p+1; i<=n; i++)。造成这个错误的原因是没有看清题目:“有m刀没有经过中间点”被我看成了“有m刀经过中间点”。

    看了lijunhui的代码才发现自己犯了这样可笑的错误。

    AC代码:

    另一种以公式形式解的AC代码:

    其中核心语句中2*(n-m)指经过中间点的切法分成的份数,再加上(2*n-m+1)*m/2,也就是从n开始倒着往后数m个数的和(即不经过中间点的切法每刀能够形成的交点数之和,与高斯求和差不多)。

    第三题(也是最后一题):1042

    原来代码:

    像这样的暴力解法,时间超限也是正常的。

    这道题本身有一定难度,看了sunxiyue的代码后,刚开始没理解,考虑了几分钟之后才发现每行代码的意思,这么高深、快捷、实用的代码我是想不出来的。

    后来因为这份代码里有许多细节问题,所以提交了好几次都没能通过,不过最后还是自己写对了。

    AC代码:

    在今天完成的3道题中,这道题是给我收获最大的,而这道题也是唯一一道让我收获了更好思路的题目。

  • 相关阅读:
    活动投票
    人品问题
    网站记录
    浅谈底层常数优化及编译器优化
    透过用户思维谈程序员的进阶之路
    我们为什么要学习?写给我的组员们
    原来你是这样的Websocket--抓包分析
    我看依赖注入
    使用反射+策略模式代替项目中大量的switch case判断
    JavaScript 词法作用域不完全指北
  • 原文地址:https://www.cnblogs.com/wangximing/p/11192021.html
Copyright © 2011-2022 走看看