POJ 1028 Web Navigation 题解

考查代码能力的题目。也可以说是算法水题,呵呵。

推荐新手练习代码能力。

要增加难度就使用纯C实现一下stack,那么就有点难度了,可以使用数组模拟环形栈。做多了,我就直接使用STL了。

#include <stdio.h>
#include <iostream>
#include <stack>
#include <string>
using namespace std;

int main()
{
	stack<string> forward;
	stack<string> backward;
	string cur = "http://www.acm.org/";
	string cmd;

	while (cin>>cmd)
	{
		if (cmd == "QUIT") break;

		if (cmd == "VISIT")
		{
			backward.push(cur);
			cin>>cur;
			puts(cur.c_str());
			forward = stack<string>();
		}
		else if (cmd == "BACK")
		{
			if (backward.empty())
			{
				puts("Ignored");
			}
			else
			{
				forward.push(cur);
				cur = backward.top();
				backward.pop();
				puts(cur.c_str());
			}
		}
		else if (cmd == "FORWARD")
		{
			if (forward.empty())
			{
				puts("Ignored");
			}
			else
			{
				backward.push(cur);
				cur = forward.top();
				forward.pop();
				puts(cur.c_str());
			}
		}
	}
	return 0;
}

POJ 1028 Web Navigation 题解

时间: 2024-10-13 08:14:21

POJ 1028 Web Navigation 题解的相关文章

POJ 1028 Web Navigation

Web Navigation Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 30689   Accepted: 13750 Description Standard web browsers contain features to move backward and forward among the pages recently visited. One way to implement these features

POJ 1028 Web Navigation (模拟法)

Web Navigation Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 29819   Accepted: 13328 Description Standard web browsers contain features to move backward and forward among the pages recently visited. One way to implement these features

poj 1028 Web Navigation(模拟题)

题目链接:http://poj.org/problem?id=1028 Description Standard web browsers contain features to move backward and forward among the pages recently visited. One way to implement these features is to use two stacks to keep track of the pages that can be reac

poj 1028 Web Navigation 【模拟题】

题目地址:http://poj.org/problem?id=1028 测试样例: Sample Input VISIT http://acm.ashland.edu/ VISIT http://acm.baylor.edu/acmicpc/ BACK BACK BACK FORWARD VISIT http://www.ibm.com/ BACK BACK FORWARD FORWARD FORWARD QUIT Sample Output http://acm.ashland.edu/ ht

Web Navigation

Description Standard web browsers contain features to move backward and forward among the pages recently visited. One way to implement these features is to use two stacks to keep track of the pages that can be reached by moving backward and forward.

POJ 3420 Quad Tiling 题解 《挑战程序设计竞赛》

POJ 3420 Quad Tiling贴瓷砖:4*N的地板上用2*1的瓷砖铺满,求所有方案数对M求余.3.4熟练掌握动态规划矩阵的幂久违地上了节课,太无聊,只好刷一题.假设S[n]表示填满n时的方案数,有S[0]=1.定义矩阵M[p][q] := 边缘p和边缘q可以拼合时取1,否则取0所谓的可以拼合表示,两个边缘拼起来后长度为1(为2就拼接不起来了),且内部缝隙可以用2*1的瓷砖填满.那么M就有一些简单的性质了,比如M的第一行应该是:0 0 0 0 0 0... 继续阅读:码农场 » POJ

POJ 1019 Number Sequence 题解

这又是一道看似简单,实际挺困难的题目. 本来想做道基础题消遣一下的,没想到反被消遣了-_-|||. 看个人的基础吧,对于数学好的会简单点,但是由于情况太多,需要都考虑全,故此难度应该在4星以上了. 我这里使用的方法就是直接打表,然后直接模拟,利用打表去掉一大段数据,剩下数据量十分小了,故此可以直接模拟. 打表是为了计算前面的周期数,把周期数直接去掉. 主要难点是后面10位数以上的数有2位, 3位,4位等情况要考虑.- 下面使用getNewNums一个函数解决了,想通了,就几行代码,还不用难理解的

POJ 3982 序列 大数题解

又是一道大数相加的题目,直接模板或者Java都可以水过了. 循环相加33次就可以了,计算出A99是第几个,准确输出答案. #include <stdio.h> #include <string> #include <algorithm> using std::string; const int MAX_B = 5120; char buf[MAX_B]; int id = 0, len = 0; inline char getFromBuf() { if (id >

POJ 3411 Paid Roads 题解 《挑战程序设计竞赛》

POJ 3411 Paid Roads开路:N个城市间有m条单向路,分别从a到b,可以在c处交P路费,也可以直接交R路费.那么问题来了,你的挖掘机怎么开最省钱?3.4熟练掌握动态规划状态压缩DP乍一看可以Dijkstra,实际上的确可以Dijkstra.不过多了一个预交费的c,所以在遍历的时候多了一维状态,这个维度储存当前走过的城市集合.在Dijkstra的时候,如果走过了c那么就有两个选择,选其中最省的即可:否则没得选.#include <iostream> #include&nb.