Given a list of positive integers, the adjacent integers will perform the float division. For example, [2,3,4] -> 2 / 3 / 4.
However, you can add any number of parenthesis at any position to change the priority of operations. You should find out how to add parenthesis to get the maximum result, and return the corresponding expression in string format. Your expression should NOT contain redundant parenthesis.
Example:
Input: [1000,100,10,2]
Output: “1000/(100/10/2)”
Explanation:
1000/(100/10/2) = 1000/((100/10)/2) = 200
However, the bold parenthesis in “1000/((100/10)/2)” are redundant,
since they don’t influence the operation priority. So you should return “1000/(100/10/2)”.
Other cases:
1000/(100/10)/2 = 50
1000/(100/(10/2)) = 50
1000/100/10/2 = 0.5
1000/100/(10/2) = 2
这道题主要是要先知道除法运算的特点才能很好的找到解题的思路。
还有这道题注意分情况讨论
还有这道题中to_string函数的积累
注意把to_stiring(nums[i])后,nums[i]还是int型
代码如下:
#include<cstdlib>
class Solution {
public:
string optimalDivision(vector<int>& nums) {
int size=nums.size();
if(size==1)return to_string(nums[0]);
else if(size ==2){
string sum=to_string(nums[0])+"/"+to_string(nums[1]);
return sum;
}
else{
string sum=to_string(nums[0])+"/";
string tmp=to_string(nums[1]);
for(int i=2;i<size;i++){
tmp+="/";
tmp+=to_string(nums[i]);
}
sum+="("+tmp+")";
return sum;
}
}
};