博客作业03--栈和队列
1.学习总结(2分)
2.PTA实验作业(4分)
2.1 题目1:7-1 字符串是否对称
2.2 设计思路(伪代码或流程图)
主函数:
创建栈S,字符数组str[80],整型变量flag=0
输入字符串到字符数组中
把字符数组的字符一个个放入栈S
for(i=0;str[i];i++){
出栈S
把出栈的元素与str[i]比较
if(出栈元素与str[i]不相等) flag=1;
}
if(flag==0) 输出yes
else 输出no
2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)
2.4 PTA提交列表说明。
该题自己在devC++调节输出正确后pta没有出现问题
2.1 题目2:7-1 报数游戏
2.2 设计思路(伪代码或流程图)
主函数:
定义变量 number存放数值,numbers存放个数
输入numbers,number的值
新建并初始化队列,长度为numbers+1
if(numbers<=number)输出error
for(i=1;i<=numbers;i++){
利用循环把数据i入队列;
}
while(队列非空){
for(i=1;i<number;i++){
把小于number的数一个个先出队列,再加入队列,排到后面;
}
输出此时队列的第一个数
}
2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)
2.4 PTA提交列表说明。
自己在一开始是以数组与队列结合的另一种比较复杂的方法做的,devC++运行的答案一直不符,自己调试后发现count值的增加有问题
count值在没进入条件时也会一直增加,自己放入pta发现也只有部分正确,输出的点错误
后看到书上的方法,比较简单,对队列的运用灵活,后自己学习书的方法去书写
在思考后自己的输出一开始并不正确,后发现自己的maxsize较小一个问题,所以在满时反而满足空的条件无法执行一些步骤
导致输出的问题,后自己把长度改为numbers+1
2.1 题目3:7-2 银行业务队列简单模拟
2.2 设计思路(伪代码或流程图)
主函数:
定义变量 number存放数值,numbers存放个数,循环变量i
输入numbers的值
新建并初始化队列q与Q来表示A,B窗口,长度都为numbers+1
for(i=0;i<numbers;i++){
输入number的值;
number为奇数放入q队列,偶数放入Q队列;
}
while(Q,与q都非空){
出队列q并输出两个元素;
出队列Q并输出一个元素 //2奇1偶输出
}
while(Q非空){出队列Q并输出元素;}
while(q非空){ 出队列q并输出元素;}
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提交记录截图