zoukankan      html  css  js  c++  java
  • 博客作业4数组

    1.本章学习总结

    1.1 思维导图

    1.2 本章学习体会及代码量学习体会

    1.2.1 学习体会

    通过这几周的函数学习,让我明白了数组的复杂,在很多时候运用数组。很没头绪,不知道数组是如何的工作的,它可以处理很多比较复杂的问题。在不段的学习中,做题目中,不断的明白了,数组的功能,
    就是一个有存储功能的数据库,在代码中,如果要多次使用同一个数据,用普通的方法很难,因为普通的方法的数据往往只能用一次,遇见数组,可以多次使用。数组不仅仅在这里有很大的功能,还可以简化很多复杂的题目。比如统计天数的,简单的用switch语句代码非常复杂,如果用二维数组,非常简单。数组的使用有很多的细节,比如变量的定义,数组的长度,很容易短。还有数组的遍历,开始是从0开始不是1开始。很多细节,这几周的学习,说明了写题目的重要性,只有锻炼题目,才可以很好的理解知识,还有细节还是很重要的。以后要多多的训练,刷题目。对数组中很多基本的方法要熟悉,比如冒泡,选择等等。只有在训练中才能巩固。

    1.2.2 代码累计

    2.PTA总分

    2.1截图PTA三次题目集:一维数组、二维数组和字符数组共3次题目集的排名得分



    2.2 我的总分:

    285+85+130=415

    3.PTA实验作业

    3.1 PTA题目1

    3.1.1 算法分析

    定义长度n,移动次数m ,存放首元素的temp,移动循环需要的k;
    - for i=0 to n 
        scanf  //读入
    end for
    
    - if m>n then m=m-n//变更左移次数
    - for i=1 to m //循环左移次数
     - temp =a [0] //存放第一个元素
       - for k to n-1  //后面元素左移
        - end for
    - a[n-1]=temp //第一元素存为最后一个元素
    - end for
    
    - for i=0 to n 
        printf  //输出
    end for
    

    3.1.2 代码截图

    3.1.3 PTA提交列表及说明

    1.没有考虑到把第一个元素要存起来,直接进行移动,这样最后一个元素是输出随机数。

    用temp存第一个元素,最后把temp存为最后一个元素。这样就可以避免元素的丢失。

    2.没有考虑到m>n.的情况,这样运行会无效。

    用if判断,如果m>n;就是重复移动,只需要移动m-n次就行。直接变化移动次数m=m-n。

    3.2 PTA题目2

    3.2.1 算法分析

    定义判断行列的开关flag和temp为0; 定义统计鞍点个数的count=0;
    - for i=0 to n 
        scanf  //读入
    end for
    
    - for i=1 to n //开始遍历
         - for j to n 
          - temp flag =0//每一次检索开关都要归0
              - for k to n//遍历相同行的元素
                 - if(a[i][j]<a[i][k])then flag=1//如果同一行中a[i][j]不是最大的元素,不符合题意
              - end for
              - for k to n//遍历相同列的元素
                 - if(a[i][j]<a[k][j])then temp=1//如果同一列中a[i][j]不是最小的元素,不符合题意
             - end for
        - end for
    - end for
    
    - if temp==0&&flag==0  then count++  printf //如果开关没变化,说明行列都符合题意输出。并统计个数
    - if count == 0
        printf  NONE //count=0说明没有一个鞍点 输出none;
    
    - for i=0 to n 
        printf  //输出
    end for
    

    3.2.2 代码

    3.2.3 PTA提交列表及说明

    1.没有鞍点的情况,输出有错误。一开始我是用这样判断

    实际上flag0||temp0 不能判断有么有鞍点,所以我引进了一个count来统计,count=0说明没有。

    3.3 PTA题目3

    3.3.1 算法分析

    定义0数组 hash 长度为256;定义原数组a;定义要删除的元素的数组b
    -gets a b //输入数组a  b
    - for i=0 to  
      - hash[b[i]]++;//便历要删除的数组,根据元素的ASCII码将hash数组中的元从0变1
    - end for
    - for i=0 to  
      - if hash[a[i]]==0 then putchar(a[i]); //根据hash中的0/1判断是否属于要删除的元素
    - end for
    

    3.3.2 代码

    3.3.3 PTA提交列表及说明

    1.用一般的方法不会处理这个题目

    老师讲了hash的方法后。才会用这个著名的方法去查找要删除的元素。然后判断输出就行

    4.代码互评

    4.1 代码截图

    我的代码:

    同学代码:

    4.2 二者的不同

    1.我是使用了2个开关分别判断行列是否满足。

    同学的代码是分别找出来满足的行列坐标,如果最后找出来的行坐标和列坐标都相同,说明这个元素都符合题意。就输出行,列坐标。

    2.同学的代码是用flag控制无鞍点的输出。

    我的代码是使用了count的量来判断是否有鞍点。

    3.我觉得我的代码比同学的更好理解。虽然思路大致相同,但是在复杂程度上,我的比他要简单点。
    2个开关分别控制。比寻找坐标更加容易。

  • 相关阅读:
    ANSI C
    如何判断机器的endianness
    union的常见用法
    主流浏览器引擎
    用宏来求数组元素个数
    inode
    分区时"磁盘上没有足够的空间完成此操作"的解决方法
    删除OEM分区
    jquery加table布局 模仿实现FaceBook Dialog
    Container.DataItem使用
  • 原文地址:https://www.cnblogs.com/zhouqb/p/10088712.html
Copyright © 2011-2022 走看看