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/
    该代码利用栈求解.通过栈的后入先出删除前面的低于这座山(会被挡住)的山峰,并用队列的长度表示回头能看到的山峰数

  • 相关阅读:
    LeetCode 88. Merge Sorted Array
    LeetCode 75. Sort Colors
    LeetCode 581. Shortest Unsorted Continuous Subarray
    LeetCode 20. Valid Parentheses
    LeetCode 53. Maximum Subarray
    LeetCode 461. Hamming Distance
    LeetCode 448. Find All Numbers Disappeared in an Array
    LeetCode 976. Largest Perimeter Triangle
    LeetCode 1295. Find Numbers with Even Number of Digits
    如何自学并且系统学习计算机网络?(知乎问答)
  • 原文地址:https://www.cnblogs.com/wu98/p/8820672.html
Copyright © 2011-2022 走看看