zoukankan      html  css  js  c++  java
  • S&Q

    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
    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.push
    	如果客户i是vip
    		VIP.push
    end
    while  !All.empty()  do
    	先判断是否有vip可进入vip窗口
    		有则将该vip出队,改变vip窗口空闲时间 
    		continue
    	如果All.front()是vip && All的队首和VIP的队首不是同一个人
    		All.pop()	//该客户之前已经出队
    		continue
    	for win=0 to sum-1 do	//遍历窗口 
    		如果该窗口是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/
    该代码利用栈求解.通过栈的后入先出删除前面的低于这座山(会被挡住)的山峰,并用队列的长度表示回头能看到的山峰数

  • 相关阅读:
    【总结】搜索
    【luogu】p2296 寻找道路
    【luogu】p2058 海港
    【总结】二叉搜索树
    【总结】线段树
    【总结】矩阵快速幂
    【笔记】很基础的数论知识
    【总结】扩展欧几里得算法
    【总结】二分查找
    【高精度乘法】例1.4 课本185页
  • 原文地址:https://www.cnblogs.com/wu98/p/8820672.html
Copyright © 2011-2022 走看看