zoukankan      html  css  js  c++  java
  • C语言I博客作业03

    作业所属课程 https://edu.cnblogs.com/campus/zswxy/CST2020-4
    作业要求 https://edu.cnblogs.com/campus/zswxy/CST2020-4/homework/11455
    这个作业的目标 <掌握for循环结构>
    学号 <20209068>

    第一部分 PTA实验作业

    1.1题目一

    要求读入1个整数X,然后输出1+2+3+...X 的和

    1.1.1实验代码截图

    1.1.2 数据处理

    定义了i,sum,x三个变量,三者都属于整数型
    数据用到了for的循环结构
    

    1.1.3PTA提交列表及说明


    Q1: 用从1加到100的原题目作为模板完成此题目,答案显示错误
    A1:弄清x在程序中的作用,转换思路进行更改
    Q2: printf("1+...+%d=%d",sum);
    A2: printf("1+...+%d=%d",x,sum);

    1.2题目二

    本题要求编写程序,计算平方根序列√​1​​​+√​2​​​+√​3​​​+⋯的前N项之和。可包含头文件math.h,并调用sqrt函数求平方根

    1.2.1实验代码截图

    1.2.2数据处理

    定义了sum,i,n三个变量,其中sum是浮点型,i和n是整数型
    同样调用了for的循环语句,还调用了函数sqrt
    

    1.2.3PTA提交列表及说明


    Q1:不明白是将头文件直接替换还是增加头文件math.h
    A1:增加头文件math.h
    Q2: 对于函数sqrt不知道怎么用
    A2:sum=sum+sqrt(i);

    1.3题目三

    据说汪星人的智力能达到人类 4 岁儿童的水平,更有些聪明汪会做加法计算。比如你在地上放两堆小球,分别有 1 只球和 2 只球,聪明汪就会用“汪!汪!汪!”表示 1 加 2 的结果是 3。

    本题要求你为电子宠物汪做一个模拟程序,根据电子眼识别出的两堆小球的个数,计算出和,并且用汪星人的叫声给出答案。

    1.3.1实验代码截图

    1.3.2数据处理

    定义了A,B,i,a四个变量,都属于整数型
    运用了for的循环语句,在for中加入printf("wang!")以表达题意
    

    1.3.3PTA提交列表及说明


    Q1:大体思路与前面两题相差不大,主要是对于wang!的表达不太理解
    A1:直接在for的循环语句中加入
    Q2:return 0;之前还要加入一个printf("n/"),对此并不理解
    A2:对之前程序的一次总表达

    第二部分 阅读代码

    题目:给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。

    示例

    方法

    直观想法

    直接按问题描述进行。对于数组中的每个元素,我们找出下雨后水能达到的最高位置,等于两边最大高度的较小值减去当前高度的值。

    算法

    初始化 ans=0ans=0ans=0
    从左向右扫描数组:
        初始化 max_left=0	ext{max\_left}=0max_left=0 和 max_right=0	ext{max\_right}=0max_right=0
        从当前元素向左扫描并更新:
            max_left=max⁡(max_left,height[j])	ext{max\_left}=max(	ext{max\_left},	ext{height}[j])max_left=max(max_left,height[j])
        从当前元素向右扫描并更新:
            max_right=max⁡(max_right,height[j])	ext{max\_right}=max(	ext{max\_right},	ext{height}[j])max_right=max(max_right,height[j])
        将min⁡(max_left,max_right)−height[i]min(	ext{max\_left},	ext{max\_right}) - 	ext{height}[i]min(max_left,max_right)−height[i] 累加到 ans	ext{ans}ans
    

    int trap(vector& height)
    {
    int ans = 0;
    int size = height.size();
    for (int i = 1; i < size - 1; i++) {
    int max_left = 0, max_right = 0;
    for (int j = i; j >= 0; j--) { //Search the left part for max bar size
    max_left = max(max_left, height[j]);
    }
    for (int j = i; j < size; j++) { //Search the right part for max bar size
    max_right = max(max_right, height[j]);
    }
    ans += min(max_left, max_right) - height[i];
    }
    return ans;
    }

    复杂性分析

    时间复杂度: O(n2)O(n^2)O(n2)。数组中的每个元素都需要向左向右扫描。
    
    空间复杂度 O(1)O(1)O(1) 的额外空间。
    

    作者:LeetCode
    链接:https://leetcode-cn.com/problems/trapping-rain-water/solution/jie-yu-shui-by-leetcode/
    来源:力扣(LeetCode)

    收获

    1 与本周教学内容想契合,同样运用了for的循环语句
    2 解题思路大概可以理解,重要的是将解题思路用正确的代码表达
    3 解法中运用了一中扫描并更新的算法,层层递进,尽管显得暴力,但是可以保证不出差错

    我的想法

    我的思路取自于木桶效应,即所能承受水的容量取决于最低木板的高度,当仔细思考后发现我这种思路无法用于此题。
    在看了正确的解题思路后也意识到逻辑思维能力的重要性

    第三部分 学习总结

    3.1学习进度条

    周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
    10/12——10/18 15h 218 大致了解了c语言,运用C语言编写最基本的程序 不太了解头文件是什么
    10/19——10/23 17h 260 了解断点的相关操作,并掌握此方法来检查代码 有时候会出现无法进入逐一调试功能
    10/24——11/7 50h 400 学会运用for的循环结构,进一步了解各种字符 还并不能熟练运用for循环结构

    3.2累积代码行和博客字数

    3.3学习感悟

    1 本周的学习相比之前难度有所增大,代码复杂度明显提高
    2 往后的学习难度会继续增大,走好每一步打好基础及其重要

  • 相关阅读:
    firewall详解
    Fiddler使用
    Asp.net Core过滤器
    单例模式
    C# 收银机顾显(客显)及打印小票(58热敏打印机)
    sqlite批量处理数据性能优化
    sqlite 插入数据 too many variables
    winform textbox控件keydown、keypress、keyup简单介绍
    ie兼容placeholder效果
    asp.net mvc全局异常捕获
  • 原文地址:https://www.cnblogs.com/yuanchao666/p/13942830.html
Copyright © 2011-2022 走看看