首页 > 其他 > 详细

博客作业03--栈和队列

时间:2018-04-14 21:47:04      阅读:261      评论:0      收藏:0      [点我收藏+]

1.学习总结(2分)

技术分享图片

技术分享图片

技术分享图片

2.PTA实验作业(4分)

2.1 题目1:7-1 字符串是否对称

2.2 设计思路(伪代码或流程图)


     创建栈S,字符数组str[80]
     输入字符串到字符数组中
     把字符数组的字符一个个放入栈S
     for(i=0;str[i];i++){
     出栈S
         把出栈的元素与str[i]比较
         有不匹配时就不符合,都匹配即符合对称
    }
    按要求相应输出

2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)

技术分享图片

2.4 PTA提交列表说明。

技术分享图片

该题自己在devC++调节输出正确后pta没有出现问题

2.1 题目2:7-1 报数游戏

2.2 设计思路(伪代码或流程图)

      定义变量 number存放数值,numbers存放个数,整型变量,count=0
      输入numbers,number的值
      新建并初始化队列,长度为numbers+1
      当numbers<=number输出error
      把数据输入队列
      while(队列非空){
       count++;
       把小于number的数先删除,再加入队列排到后面
       按格式要求输入此时队列的第一个数(count来判断格式)
      }

2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)

技术分享图片

2.4 PTA提交列表说明。

技术分享图片
技术分享图片

自己在一开始是以数组与队列结合的另一种比较复杂的方法做的,devC++运行的答案一直不符,自己调试后发现count值的增加有问题

技术分享图片
技术分享图片

count值在没进入条件时也会一直增加,自己放入pta发现也只有部分正确,输出的点错误

后看到书上的方法,比较简单,对队列的运用灵活,后自己学习书的方法去书写

在思考后自己的输出一开始并不正确,后发现自己的maxsize较小一个问题,所以在满时反而满足空的条件无法执行一些步骤

导致输出的问题,后自己把长度改为numbers+1

2.1 题目3:7-2 银行业务队列简单模拟

2.2 设计思路(伪代码或流程图)

     定义变量 number存放数值,numbers存放个数,循环变量i,count=0;
     输入numbers的值
     新建并初始化队列q与Q,长度都为numbers+1
     输入number的值,奇数放入q队列,偶数放入Q队列
    while(Q,与q都非空){
     count++;
     按题目要求2奇1偶输出   }
    while(Q非空){以count判断有无执行上循环,按格式输出元素}
    while(q非空){以count判断有无执行上循环,按格式输出元素}
 

2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)

技术分享图片
技术分享图片

2.4 PTA提交列表说明。

技术分享图片
技术分享图片
技术分享图片

自己一开始对队列空时的判断缺乏,读题不仔细只考虑到两个都有为2奇1偶输出的情况

添加Q与q队列有一个不为空输出的相关条件后,部分正确

技术分享图片

后发现是自己在修改时添加的一个条件语句出错忘记删除,删除后正确

3.截图本周题目集的PTA最后排名(3分)

本次2个题目集总分:125+215=340分
必做题共:205分

3.1 栈PTA排名

技术分享图片

3.2 队列PTA排名

技术分享图片

3.3 我的总分:173

本题评分规则:

(1)2个题目集PTA总分340分:3分(全部题目都做)
(2)PTA总分在205分--340分:2.5分(必做题全部做完,选做题做部分)
(3)PTA总分在110--205分:2分(必做题大部分做完)
(4)PTA总分在90--110分:1.5分
(5)PTA总分在55分-90分以下:1分
(6)PTA总分在55分以下:0分

4. 阅读代码(必做,1分)


#include<iostream>  
#include<cstdio>  
#include<algorithm>  
using namespace std;  
int a[100005];  
int rail[100005];//数组的值表示当前轨道最左边列车   
int cnt;  
void Binary_search(int x)//二分搜索轨道数组   
{  
    int l , r, mid;  
    l = 1;  
    r = cnt;  
    while(l < r)  
    {  
        mid = l + (r - l)/2;  
        if(rail[mid] > x) r = mid;  
        else if(rail[mid] < x)l = mid + 1;  
    }  
    rail[r] = x;  
}  
int main()  
{  
    int n, i, j;  
    scanf("%d", &n);  
    for(i = 1; i <= n; i++)  
    {  
        scanf("%d", &a[i]);  
    }  
    cnt = 0;  
    for(i = 1; i <= n; i++)  
    {  
        if(cnt == 0)//当没有列车在中间轨道时   
        {  
            cnt++;  
            rail[cnt] = a[i];  
        }  
        else  
        {  
            if(rail[cnt] < a[i])//轨道上的列车都比当前列车小   
            {  
                rail[++cnt] = a[i];  
            }  
            else Binary_search(a[i]);  
        }  
    }  
    cout<<cnt<<endl;  
    return 0;  
}  

  

代码链接:https://blog.csdn.net/l_bestcoder/article/details/51944438

代码功能:实现列车调度问题

代码优点:利用数组rail[cnt]在保留列车同时记录轨道数,表示多条轨道上的此时列车值

当好几条轨道上的列车都比当前列车大,利用二分查找到最小最适合的一辆跟后面,这里用法巧妙,效率提高

5. 代码Git提交记录截图

技术分享图片
技术分享图片
技术分享图片

博客作业03--栈和队列

原文:https://www.cnblogs.com/linxiaolu/p/8763003.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!