【HDU3347】Calculate the expression(表达式求值变化)

Categories: 数据结构和算法
Tags: ,
Comments: No Comments
Published on: 2011 年 05 月 12 日

You may find it’s easy to calculate the expression such as:
a = 3 b = 4 c = 5 a + b + c = ?
Isn’t it?
题意:表达式求值的变种。。。。
题解:对变量做一个map映射,然后进行表达式求值即可。。。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
#include<string>
using namespace std;
#define CLR(arr,val) memset(arr,val,sizeof(arr))

int mystoi(string s)
{
	int i;
	sscanf(s.c_str(),"%d",&i);
	return i;
}
bool isdigit(string s)
{
	return (s[0]<='9'&&s[0]>='0' || s[0]=='-');
}
map<string,int> var;
int getval(string s)
{
	if(isdigit(s)) return mystoi(s);
	else return var[s];
}
int main()
{
	int t;
	string str1,str2,str3;
	scanf("%d",&t);
	while(t--)
	{
		int n;

		var.clear();
		scanf("%d",&n);
		for(int i=0;i!=n-1;i++)
		{
			cin>>str1>>str2>>str3;
			var[str1]=mystoi(str3);
		}
		int res=0;
		cin>>str1;
		res=getval(str1);
		while(cin>>str1>>str2 && str1!="=")
		{
			if(str1=="+")
			{
				res+=getval(str2);
			}
			else res-=getval(str2);
		}
		printf("%d\n",res);
	}
}

我猜你可能也喜欢:

No Comments - Leave a comment

Leave a comment

电子邮件地址不会被公开。 必填项已用*标注

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>


Welcome , today is 星期日, 2017 年 12 月 17 日