码迷,mamicode.com
首页 > 其他好文 > 详细

HDU ACM 1082 Matrix Chain Multiplication

时间:2015-06-04 15:53:34      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:c   c++   acm   算法   编程   

分析:利用栈处理。遇到矩阵时入栈;遇到“)” 弹出两个矩阵进行运算,并将结果压栈。另外在矩阵相乘时注意两个矩阵是否满足相乘条件。

#include<iostream>
#include<stack>
#include<string>
#include<cctype>
using namespace std;

#define N 30
struct node
{
	char m;
	int r,c;
} a[N];
string s;

bool process(int& ans)
{
	int len,i;
	stack<node> sta;
	node x,y,t;

	len=s.length();
	if(len==1)
	{
		ans=0;
		return true;
	}
	ans=0;
	for(i=0;i<len;i++)
		if(isupper(s[i]))
			sta.push(a[s[i]-'A']);
		else if(s[i]==')')
		{
			x=sta.top();
			sta.pop();
			y=sta.top();
			sta.pop();
			if(x.r!=y.c) return false;
			t.r=y.r;
			t.c=x.c;
			ans+=y.r*y.c*x.c;
			sta.push(t);
		}
	return true;
}

int main()      
{
	int n,i,ans;
	char c;

	cin>>n;
	for(i=0;i<n;i++)
	{
		getchar();
		cin>>c;
		a[c-'A'].m=c;
		cin>>a[c-'A'].r>>a[c-'A'].c;
	}
	while(cin>>s)
	{
		if(!process(ans))
			cout<<"error"<<endl;
		else
			cout<<ans<<endl;
	}
    return 0;      
}


HDU ACM 1082 Matrix Chain Multiplication

标签:c   c++   acm   算法   编程   

原文地址:http://blog.csdn.net/a809146548/article/details/46360265

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!