hdu3347(模拟+STL)

23 篇文章 0 订阅
22 篇文章 0 订阅

Calculate the expression

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 686    Accepted Submission(s): 346


Problem Description
You may find it’s easy to calculate the expression such as:
a = 3
b = 4
c = 5
a + b + c = ?
Isn’t it?
 

Input
The first line contains an integer stands for the number of test cases.
Each test case start with an integer n stands for n expressions will follow for this case.
Then n – 1 expressions in the format: [variable name][space][=][space][integer] will follow.
You may suppose the variable name will only contain lowercase letters and the length will not exceed 20, and the integer will between -65536 and 65536.
The last line will contain the expression you need to work out.
In the format: [variable name| integer][space][+|-][space][variable name| integer] …= ?
You may suppose the variable name must have been defined in the n – 1 expression and the integer is also between -65536 and 65536.
You can get more information from the sample.
 

Output
For each case, output the result of the last expression.
 

Sample Input
  
  
3 4 aa = 1 bb = -1 aa = 2 aa + bb + 11 = ? 1 1 + 1 = ? 1 1 + -1 = ?
 

Sample Output
  
  
12 2 0
 

Author
dandelion
 

Source
 

Recommend
lcy
 


模拟题,可以用STL简化过程。

#include<iostream>
#include<string>
#include<map>
using namespace std;

map<string,int>Map;
int main()
{
	int cas,i,n,sum;
	cin>>cas;
	while(cas--)
	{
		Map.clear();
		string a,op;
		int b;
		scanf("%d",&n);
		for(i=0;i<n-1;i++)
		{
			cin>>a>>op>>b;
			Map[a]=b;
		}
		cin>>a>>op;	
		sum=0;
		if(a[0]=='-'||(a[0]>='0'&&a[0]<='9'))
			sum+=atoi(a.c_str());
		sum+=Map[a];
		while(op!="=")
		{
			cin>>a;
			if(a[0]=='-'||(a[0]>='0'&&a[0]<='9'))
			{
				if(op=="+")sum+=atoi(a.c_str());
				else sum-=atoi(a.c_str());
			}
			else 
			{
				if(op=="+")sum+=Map[a];
				else sum-=Map[a];
			}
			cin>>op;
		}
		cin>>op;
		cout<<sum<<endl;
	}
	return 0;
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值