标签:
Aroud 800 A.D., El Mamum, Calif of Baghdad was presented the formula 1+2*3*4+5, which had its origin in the financial accounts of a camel transaction. The formula lacked parenthesis and was ambiguous. So, he decided to ask savants to provide him with a method to find which interpretation is the most advantageous for him, depending on whether is is buying or selling the camels.
You are commissioned by El Mamum to write a program that determines the maximum and minimum possible interpretation of a parenthesis-less expression.
The input consists of an integer N, followed by N lines, each containing an expression. Each expression is composed of at most 12numbers, each ranging between 1 and 20, and separated by the sum and product operators + and *.
For each given expression, the output will echo a line with the corresponding maximal and minimal interpretations, following the format given in the sample output.
3 1+2*3*4+5 4*18+14+7*10 3+11+4*1*13*12*8+3*3+8
The maximum and minimum are 81 and 30. The maximum and minimum are 1560 and 156. The maximum and minimum are 339768 and 5023.
题意:加括号求表达式的最大值和最小值、
思路:一开始看毫无头绪,但是你仔细算,表达式按照优先级顺序来算,所得的结果正好是最小值,如果按照先算加法后算乘法来算,正好是最大值,所以剩下的就用栈来模拟完就行了。
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <algorithm>
#include <set>
#include <queue>
#include <stack>
#include <map>
using namespace std;
int main()
{
int T;
char ch;
long long a,t;
long long min,max;
scanf("%d",&T);
while(T--) {
stack<long long >minn;
stack<long long >maxx;
scanf("%lld",&a);
minn.push(a);
maxx.push(a);
while((ch=getchar())!='\n') {
scanf("%lld",&a);
if(ch=='+') {
minn.push(a);
t=maxx.top();
maxx.pop();
t+=a;
maxx.push(t);
} else if(ch=='*') {
maxx.push(a);
t=minn.top();
minn.pop();
t*=a;
minn.push(t);
}
}
min=0;
max=1;
while(!minn.empty()) {
min+=minn.top();
minn.pop();
}
while(!maxx.empty()) {
max*=maxx.top();
maxx.pop();
}
printf("The maximum and minimum are %lld and %lld.\n",max,min);
}
return 0;
}
UVA 10700-Camel trading(栈求表达式的最大最小值)
标签:
原文地址:http://blog.csdn.net/u013486414/article/details/43535721