UVA442-栈

题意:

求矩阵相乘的次数,用栈

WA了这么多次

下次还是不能去猜题意,o(︶︿︶)o 唉

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

struct Node
{
	int r;
	int c;
};
int main()
{
	freopen("d:\\1.txt", "r", stdin);
	int total;
	Node node[26];
	cin >> total;
	char cc;
	int r, c;
	while (total--)
	{
		cin >> cc >> r >> c;
		Node nn;
		nn.r = r;
		nn.c = c;
		node[cc-‘A‘] = nn;
	}
	string str;
	while (cin>>str)
	{
//		cout << str << endl;
		total = 0;
		Node stack[1000];
		int s = 0;
		bool error = false;
		int length = str.length();
		for(int i = 0; i < length; i++)
		{
			cc = str.at(i);
			if(cc == ‘)‘)
			{
				//pop;
				Node node2 = stack[--s];
				Node node1 = stack[--s];
				//r1*c1*c2
				if(node1.c != node2.r)
				{
					error = true;
					break;
				}
				total += node1.r * node1.c * node2.c;
				Node node3;
				node3.r = node1.r;
				node3.c = node2.c;
				stack[s++] = node3;
			}
			else if(‘A‘ <= cc && cc <= ‘Z‘)
			{
				stack[s++] = node[cc - ‘A‘];
			}
		}
		if(error)
			cout << "error" << endl;
		else
			cout << total << endl;
	}
	return 0;
}

  

时间: 2024-07-28 18:42:22

UVA442-栈的相关文章

七方件业金离以提领前群约会ODjdidtlwfWv

为了从不同环节,尤其与广大使用人群直接关系的环节反映质量状况,对共享自行车投放点.运营仓库.生产企业等不同环节的产品抽查,覆盖了共享自行车从成品出厂到待投放的关键环节. 该负责人称,根据新车投放情况,结合共享自行车行业市场占有分布特点,本次重点抽查了摩拜.ofo.Hellobike三个品牌的产品,占本次抽查批次总数的83.3%.其中,在天津.无锡.武汉.广州.深圳.东莞6个城市抽查了9批次摩拜产品,占产品抽查批次总数的37.5%,抽查批次合格率88.9%,抽查不合格的1批次产品为待投放于广州市的

UVa442 Matrix Chain Multiplication (栈)

链接:http://acm.hust.edu.cn/vjudge/problem/19085分析:用栈来实现一个简单的表达式求值.输入表达式保证合法,比如(A(BC))把BC看成一个整体D那么(A(BC))就是AD,所以这些表达式都是在不断重复嵌套相同的结构A*B.遍历表达式,遇到字母则将对应矩阵压入栈中,遇到右括号则将栈顶两个矩阵弹出,判断是否能进行乘法,如果能则累加乘法次数,再将相乘后的矩阵压栈,如果不能则将error置为true,退出循环. 1 #include <iostream> 2

ACM学习历程——UVA442 Matrix Chain Multiplication(栈)

Description Matrix Chain Multiplication  Matrix Chain Multiplication  Suppose you have to evaluate an expression like A*B*C*D*E where A,B,C,D and E are matrices. Since matrix multiplication is associative, the order in which multiplications are perfo

UVa442 Matrix Chain Multiplication(矩阵链乘)

UVa442 Matrix Chain Multiplication(矩阵链乘) 题目链接:Uva442 题目描述:输入n个矩阵的维度和一个矩阵链乘的表达式,输出乘法的次数,如果乘法无法进行,则输出error. 题目分析: 栈对表达式求值有着特殊的作用,本题表达式简单,可以用一个栈来完成,遇到字母时入栈,遇到右括号时出栈并且计算,之后算出的结果入栈. <<<<<<<<<<<<<<<<<<<&l

UVa 442 Matrix Chain Multiplication(栈的应用)

题目链接: https://cn.vjudge.net/problem/UVA-442 1 /* 2 问题 3 输入有括号表示优先级的矩阵链乘式子,计算该式进行的乘法次数之和 4 5 解题思路 6 栈的应用,直接忽视左括号,每次只计算栈顶的两个矩阵会更加方便. 7 */ 8 #include<cstdio> 9 #include<cstring> 10 #include<stack> 11 #include<cctype> 12 using namespac

“全栈”工程师 请不要随意去做

今天我来给大家说说 "全栈工程师" 的事儿. 写这篇文的背景原因: 很简单就是最近越来越多的人想做[全栈工程师],他们的目标就是全栈,他们才入行短短1-2年,甚至刚从培训班出来:我的目标是做全栈,我啥都要学会,啥都会写,这样我就是大牛了,可以挣大钱,就算创业,我也不用招那么多人,一个人搞定一个产品,融资上市 ,CEO白富美,balabala... 我给他的回复是: 去你xx的,你连JS 数组和对象用法都搞不清,抄几个效果,看几个视频教程摸索摸索就要做万能人了? "全栈&quo

15.1-全栈Java笔记:Java事件模型是什么?事件控制的过程有哪几步??

应用前边两节上一章节的内容,大家可以完成一个简单的界面,但是没有任何的功能,界面完全是静态的,如果要实现具体功能的话,必须要学习事件模型. 事件模型简介及常见事件模型 对于采用了图形用户界面的程序来说,事件控制是非常重要的. 一个源(事件源)产生一个事件并把它(事件对象)送到一个或多个监听器那里,监听器只是简单地等待,直到它收到一个事件,一旦事件被接收,监听器将处理这些事件. 一个事件源必须注册监听器以便监听器可以接收关于一个特定事件的通知. 每种类型的事件都有其自己的注册方法,一般形式为: v

链栈的实现

链栈即链式栈,也就是说我们不用再考虑空间的大小,可随心所欲的进行数据的插入/删除了.和顺序栈一样,仍然要保持其stack的特性,只在一端进行插入和删除,后进先出. 示例代码: #ifndef _LINKSTACK_H #define _LINKSTACK_H typedef int ElemType; typedef int Status; typedef struct linkStack { ElemType data; struct linkStack * top; }linkStack;

95后实习生的远程办公体验(asp.net mvc\C#技术栈)

这个月我们做了一件别人看起来很疯狂的事情,就是让一批95后的实习生实行远程办公,效果还不错,于是写此文总结一下. 其实认真算算,我自己的远程工作经验有十年了吧,在北京工作的时候天气不好就申请在家办公,在硅谷的时候每周有三天在家办公,两天去办公室办公.所以我也算得上是远程办公的老司机了吧. 不过,我之前都是对有多年工作经验的老司机才实行远程办公,还从来没有对还未毕业的实习生实行过.老实说,不敢啊,也不放心,况且我在cnblogs博客园呆了十年,还真没见过对还未毕业的实习生实行过远程办公的. 那为什

全栈必备Linux 基础

Linux 几乎无处不在,不论是服务器构建,还是客户端开发,操作系统的基础技能对全栈来说都是必备的. 系统的选择 Linux发行版本可以大体分为两类,一类是商业公司维护的发行版本,一类是社区组织维护的发行版本,前者以著名的Redhat(RHEL)为代表,后者以Debian为代表. Redhat,应该称为Redhat系列,包括RHEL.Fedora.CentOS(RHEL的社区克隆版本,免费).Ubuntu严格来说不能算一个独立的发行版本,Ubuntu是基于Debian加强而来,一个拥有Debia