题意不重要 两点: 这一题一开始想用带空格的字符数组做,后来发现完全没必要(看代码) 第二点 C++中有堆栈的结构,一开始是用数组做的 易错之处: visit:一个是forward要清空 一个是先把当前的存进back 再输入新的当前网页 #include <iostream> #include <cstdio> #include <cstring> #include <string> #include <stack> using namespace std; string str; stack<string> backward; stack<string> forward; string current = "http://www.acm.org/"; int main() { //freopen("data.in", "rb", stdin); while(cin >> str) { if(str == "QUIT") break; else if(str == "VISIT") { backward.push(current); cin >> current; cout << current << endl; while(!forward.empty()) forward.pop(); } else if(str == "BACK") { if(!backward.empty()) { forward.push(current); current = backward.top(); backward.pop(); cout << current << endl; } else cout << "Ignored" << endl; } else if(str == "FORWARD") { if(!forward.empty()) { backward.push(current); current = forward.top(); forward.pop(); cout << current << endl; } else cout << "Ignored" << endl; } } return 0; }
//////////////////别人的
我的:
# include <iostream># include <cstdio># include <string># include <cmath>using namespace std;int main(){ string back[101]; string forward[101]; string cur="http://www.acm.org/"; string str; int b=0,f=0; cin>>str; while(str!="QUIT") { if(str=="VISIT") { back[b++]=cur; cin>>cur; f=0; cout<<cur<<endl; } else if(str=="BACK") { if(b==0) { cout<<"Ignored"<<endl; } else { forward[f++]=cur; cur=back[--b]; cout<<cur<<endl; } } else if(str=="FORWARD") { if(f==0) { cout<<"Ignored"<<endl; } else { back[b++]=cur; cur=forward[--f]; cout<<cur<<endl; } } cin>>str; } return 0;}
时间: 2024-10-26 06:22:12