求大佬教教我,有3个点MLE
查看原帖
求大佬教教我,有3个点MLE
556281
qianwanlang楼主2023/5/3 10:25

代码:

#include <cstdio>
#include <iostream>
using namespace std;

string s;

int s2i(string x)
{
    int ans = 0;
    while (x != "")
    {
        ans = ans * 10 + x[0] - '0';
        x = x.substr(1);
    }
    return ans;
}

int work(string x)
{
    int p = 0;
    for (int i = 1; i < x.size(); i++)
        if (x[i] == '+' || x[i] == '-')
            p = i;
    if (p > 0)
    {
        if (x[p] == '+')
            return work(x.substr(0, p)) + work(x.substr(p + 1));
        return work(x.substr(0, p)) - work(x.substr(p + 1));
    }
    return s2i(x);
}

int main()
{
    cin >> s;
    printf("%d", work(s));
    return 0;
}

思路:

首先,我以样例分析了问题。

在样例1+2-3中,因为输入的是字符串,无法直接计算,所以我把它看成了两部分,也就是1+2-3这就是work函数的作用,然后继续拆解1+2,拆解成1+2,最后,在用s2i函数将字符串转化为数字,问题就解决了。

所以,我就写出了这个juruo(不会打)代码。

希望大佬教教我。

2023/5/3 10:25
加载中...