#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
using namespace std;
char ans[110];
int flag;
int x;
void sovle(int s, int e, int res, int x) {
if(e -1 == s)
return;
char str[30];
int k = 0, i,j;
int n = 0;
for(i = s+1; ; i++){
if(ans[i] == '(')
break;
str[k++] = ans[i];
}
str[k] = '\0';
int tem = atoi(str);
// printf("\ntem = %d\n", tem);
res += tem;
// printf("tem = %d res = %d \n",tem, res);
if(i + 4 == e && res == x){
flag = 1;
}
for(j = i; ; j++){
if(ans[j] == '(') n++;
if(ans[j] == ')') n--;
if(n == 0)
break;
}
sovle(i, j, res, x);
sovle(j + 1, e -1, res, x);
}
int main()
{
char ch;
int n = 0;
int k = 0;
while(cin>>x)
{
k = 0;
n = 0;
flag = 0;
while(cin>>ch)
{
if(ch == ' ')
continue;
ans[k++] = ch;
if(ch == '(') n++;
if(ch == ')') n--;
if(n == 0)
break;
}
sovle(0, k -1, 0, x);
if(flag)
printf("yes\n");
else
printf("no\n");
}
return 0;
}
poj1145 括号间的读取与匹配
最新推荐文章于 2020-01-07 01:14:05 发布
本文详细介绍了如何使用C++编程语言解析数学表达式,并通过递归函数解决嵌套括号问题。代码示例中包含了从输入字符串中解析表达式、计算结果以及验证表达式的正确性的过程。程序通过读取用户输入的数学表达式,利用递归函数解决嵌套的括号问题,最终输出计算结果和验证结果是否符合预期。
1385

被折叠的 条评论
为什么被折叠?



