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个开关分别控制。比寻找坐标更加容易。

  • 相关阅读:
    基于Python的人脸动漫转换
    let 与 var的区别
    【LeetCode】汇总
    【HDU】4632 Palindrome subsequence(回文子串的个数)
    【算法】均匀的生成圆内的随机点
    【LeetCode】725. Split Linked List in Parts
    【LeetCode】445. Add Two Numbers II
    【LeetCode】437. Path Sum III
    【LeetCode】222. Count Complete Tree Nodes
    【LeetCode】124. Binary Tree Maximum Path Sum
  • 原文地址:https://www.cnblogs.com/zhouqb/p/10088712.html
Copyright © 2011-2022 走看看