计蒜客 网页跳转 只能过一半样例的奇葩算法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_41145832/article/details/86688104

问题描述
蒜头君每天都在用一款名为“蒜厂浏览器”的软件。在这个浏览器中,一共三种操作:打开页面、回退和前进。它们的功能如下: 
打开页面:在地址栏中输入网址,并跳转到网址对应的页面; 
回退:返回到上一次访问的页面; 
前进:返回到上次回退前的页面,如果上一次操作是打开页面,那么将无法前进。 
现在,蒜头君打开浏览器,进行了一系列操作,你需要输出他每次操作后所在页面的网址。 


菜鸡代码

不知道为啥……只能过5组

唉……自己太菜了

#include<iostream>
#include<string>
#include<stack>
using namespace std;
int main(){
    int n;
    cin>>n;
    string op,ad;
    stack <string> back,forward;
    string current;
    for(int i=0;i<n;i++){
        cin>>op;
        if(op=="VISIT"){
            cin>>ad;
            // append current to back;
            if(i!=0){
                back.push(current);
                current = ad;
            } else {
                current = ad;
            }
            stack <string> fish;
            swap(fish,forward);//清空栈居然要用如此阴险的操作
            cout<<ad<<endl;
        }
        else if(op=="FORWARD"){
            //string current;
            if(!forward.empty()){
                // do something
                back.push (current);
            	current = forward.top();
                forward.pop();
            	cout<<current<<endl;
            } else {
                cout<<"Ignore"<<endl;
            }
        }
        else if(op=="BACK"){
            if( !back.empty()){
             //   cout<<"WHEN doing BACK operation, the current is"<<current<<endl;
                forward.push(current);
            	current =  back.top();
                back.pop();
            	cout<<current<<endl;
            } else {
                cout<<"Ignore"<<endl;
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_41145832/article/details/86688104