站外提求助
  • 板块题目总版
  • 楼主AC11msmb
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/9/28 21:29
  • 上次更新2024/9/29 09:04:57
查看原帖
站外提求助
1419757
AC11msmb楼主2024/9/28 21:29

输入相应操作,模拟实现一个跳跃式浏览器程序,支持以下操作:

输入1,表示打开新网址,跳转浏览该网页,并将该网页编号(从1开始递增)加入历史记录中。当达到最大容量时,自动删除最早的记录。

输入2以及 k 1 ,表示点击前进按钮,跳转浏览并输出下面第 k k1个网页编号(不用重复加入历史记录)。如果没有下 k 1 个网页,则通过输出"Error: no forward history",表示禁用该按钮,此时浏览器页面不进行跳转。

输入3以及 k 2 ,表示点击后退按钮,返回浏览并输出上面第 k 2 个网页编号(不用重复加入历史记录)。如果没有上 k 2 个网页,则通过输出"Error: no back history",表示禁用该按钮,此时浏览器页面不进行跳转。

输入4,表示点击退出按钮,清空历史记录。

输入描述 第一行一个整数 d , 表示历史记录的容量;

接下来若干行每行输入一个操作符以及参数,操作符与参数之间以空格分隔;

输入以0结束。

输出描述 对于每一个操作2,输出网页编号或"Error: no forward history";

对于每一个操作3,输出网页编号或"Error: no back history";

每个操作输出之间以换行隔开。 样例输入100000 1 1 1 1 1 1 3 2 3 1 4 2 2 1 1 1 3 3 2 1 3 2 0 输出4 3 Error: no forward history Error: no back history Error: no forward history 7 我的代码```cpp #include <bits/stdc++.h> using namespace std; deque history; int main() { int d; cin >> d; int cur = -1; string op; while (cin >> op && op!= "0") { if (op == "1") { int url = history.empty()? 1: history.back()+1; history.push_back(url); if (history.size() > d) { history.pop_back(); } cur = history.size() - 1; } else if (op == "2") { int k1; cin >> k1; if (cur + k1 >= history.size()) { cout << "Error: no forward history" << endl; } else { cur =cur+ k1; cout << history[cur] << endl; } } else if (op == "3") { int k2; cin >> k2; if (cur - k2 < 0) { cout << "Error: no back history" << endl; } else { cur =cur- k2; cout << history[cur] << endl; } } else if (op == "4") { history.clear(); cur = -1; } } return 0; }

2024/9/28 21:29
加载中...