题目:略
这一题做了两遍才做出来
有一些麻烦的点需要注意
1: 数字表达式的计算,这里由于只涉及到 ±* 因此其实没必要用中缀表达式转后缀表达式利用栈来计算,处理起来并不方便
2: 2000= 由于没有插入任何的运算符,所以其实也为 IMPOSSIBLE
除此之外,这是一道dfs暴力深搜的水题,甚至没有地方需要剪枝,代码非常简单,原创。
#include<bits/stdc++.h>
using namespace std;
string s;
string symbol = " *+-";
int len;
string sym; //记录符号
vector<int> num;
vector<char> symboll;
const int maxn = 9 + 3;
bool cal() {
int size = num.size();
for (int i = 0; i < size - 1; i++) {
if (symboll[i] == '*') {
num[i + 1] = num[i] * num[i + 1];
num[i] = -1;
symboll[i] = ' ';
}
}
vector<int> num1;
vector<char> symbol2;
for (int i =<