problem 67: 表示式
description
給你乙個只有+和*的無括號表示式,給這個表示式加上任意括號,求出這個表示式的最大值和最小值
input
先是n(n < 10000)表示測試資料組數
接下n行每一行乙個表示式,表示式中不會超過100個數,每個數大於等於1小於等於20,測試資料結果不超過longlong型別
output
按下列事例輸出每一行的最大值和最小值
sample input
31+2*3*4+5
4*18+14+7*10
3+11+4*1*13*12*8+3*3+8
sample output
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#include#include#includeusing namespace std;
int main()
s.push(temp);
while(i < len)
a = s.top();
s.pop();
a += temp;
s.push(a);
}else
s.push(temp);}}
max = 1;
while(!s.empty())
i = 0; temp = 0;
while(str[i] >= '0' && str[i] <= '9')
s.push(temp);
while(i < len)
a = s.top();
s.pop();
a *= temp;
s.push(a);
}else
s.push(temp);}}
min = 0;
while(!s.empty())
printf("the maximum and minimum are %lld and %lld.\n", max, min);
}return 0;
}
EL表示式處理字串
else 原來得到的是如2006 11 12 11 22 22.0 使用functions函式來獲取list的長度 fn contains string,substring 假如引數string中包含引數substring,返回true fn containsignorecase string,su...
shell 字串 表示式
在shell程式設計中,經常要處理一些字串變數。比如,計算長度啊 擷取子串啊 字元替換啊等等,常常要用到awk expr sed tr等命令。下面給大家介紹個簡單的字串處理方法,用不著巢狀複雜的子命令。計算value字串的字元數量。或 刪除value字串中以分隔符 匹配的右邊字元,保留左邊字元。或 ...
字串 表示式求值
不曾想到我居然還會寫這種部落格,然而自己是真的對這些模擬很噁心。這簡單,可以遞迴求解,遇到乙個符號,直接往下遞迴。這裡我的處理是有空格的,因此呢可以使用atof將字串轉化了double,atoi好像是轉化為int。include include include include include inc...