码迷,mamicode.com
首页 > 其他好文 > 详细

S&Q

时间:2018-04-15 11:43:42      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:银行   www.   erro   输入   amp   include   入队   3.3   out   

1.学习总结

2.PTA实验作业

2.1 题目 : 报数游戏

2.1 解题思路

输入 n , m    //总人数和退圈数
if  m>n
    Error
    结束程序
end
定义队列 Numoff , 将n个人入队
int i= 1    //报数
while  Numoff.size()!=0  do
    if( i%=m )
        then  将队首放到队尾
        else  输出退圈得人的编号 , Numoff.pop()
    end
    i++
end

2.1 代码截图

技术分享图片

2.1 PTA提交列表

技术分享图片

2.2 题目 : 列车厢调度

2.2 设计思路

定义栈S3储存3号轨道
定义队列S1和Aim
while  S1.size()  do
    if  3号轨道最外面的车厢符合进道顺序
        将其移向2号轨道
        continue
    end
    if  1号轨道最外面的车厢符合进道顺序
        then  将其移向2号轨道
        else  将其移向3号轨道
    end
end
while  S3.size()  do
    if  3号轨道最外面的车厢符合进道顺序
        then  将其移向2号轨道
        else  Error , 结束程序
    end
end

2.2 代码截图

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

2.2 PTA提交列表

技术分享图片

2.3 题目 : 银行排队问题之单队列多窗口加VIP服务

2.3 解题思路

定义结构体Bank存放客户信息
定义栈All存放所有客户 , VIP额外存放vip客户 
输入n     //客户总数
for i=1 to n do
    输入客户i的信息,入队All
    如果客户i是vip
        VIP.push()
end
while !All.empty() do
    先判断是否有vip可进入vip窗口
        有则将该vip出队,改变vip窗口空闲时间 
    如果All.front()是vip && All的队首和VIP的队首不是同一个人
        All.pop()   //该客户之前已经出队 
    for win=0 to sum-1 do   //遍历窗口 
        如果win号窗口是vip窗口,且此时也有vip在等窗口
            continue    //让位
        如果win号窗口空闲
            进入该窗口 , break
        如果该窗口等待时间最短 
            标记该窗口 
    end
    if win==sum //完全遍历,没有发现空闲窗口
        进入标记的窗口
end

2.3 代码截图

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

2.3 PTA提交列表

技术分享图片

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

3.1 栈PTA排名

技术分享图片

3.2 队列PTA排名

技术分享图片

3.3我的总分: 340

4.阅读代码

题目 :
Rocky山脉有n个山峰,,从西向东依次编号为1, 2, 3, ……, n。编号为i的山峰高度为hi。小修从西往东登山。
每到一座山峰,她就回头观望。在第i座山峰,她记录下自己回头能看到的山峰数si。
小修把所有的si加起来得到S作为她此次旅行快乐值。你能计算出小修的快乐值吗?
代码 :
#include<bits/stdc++.h>
using namespace std;
int main(){
    stack <int> h;
    int n , val = 0 ;
    cin >> n;
    while( n-- ){
        int hi;
        cin >> hi ;
        val += h.size();
        while( h.size() && h.top() < hi )
            h.pop();
        h.push( hi );
    }
    cout << val << endl;
    return 0;
}

出处 : http://www.codevs.cn/problem/1531/
该代码利用栈求解.通过栈的后入先出删除前面的低于这座山(会被挡住)的山峰,并用队列的长度表示回头能看到的山峰数

S&Q

标签:银行   www.   erro   输入   amp   include   入队   3.3   out   

原文地址:https://www.cnblogs.com/wu98/p/8820672.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!