失われたかっこ


失われたかっこ


質問する


ポテンシャル俊は正数と+,−と括弧で式を構成した.そして勢俊はかっこを全部削除した.
そして勢俊適はかっこをつけて、この式の値を最小限に抑えようとした.
この式の値を最小にするプログラムを適切なかっこで書いてください.

入力


最初の行には数式があります.式は「0」~「9」、「+」、「-」で構成され、最初の文字と最後の文字は数値です.また、2つ以上の演算子が連続して現れず、5桁よりずっと連続した数値はありません.数はゼロから始まることができます.入力式の長さは50以下です.

しゅつりょく


1行目に正解を出力します.

コード#コード#

#include <iostream>

using namespace std;

/* 조건 */
#define MAX_LENGTH 51

/* 변수 */
int num = 0, result = 0;
bool isPlus = true;
string expression;
char symbol;

/* 함수 */

int main() {
    /* 입력 */
    cin >> expression;

    /* 풀이 */
    int exp_len;
    exp_len = expression.length();

    for(int i = 0; i < exp_len; i++) {
        if(isdigit(expression[i])) {
            num *= 10;
            num += expression[i] - '0';
        } else {
            if(isPlus) {
                result += num;
                num = 0;
            } else {
                result -= num;
                num = 0;
            }
            if(expression[i] == '-') isPlus = false;
        }
    }

    if(isPlus) {
        result += num;
        num = 0;
    } else {
        result -= num;
        num = 0;
    }

    /* 출력 */
    cout << result;
}

に答える


簡単です.
逆に入力を解析するのに時間がかかりました.
本当はcinを使おうと思っていたのですが諦めてしまいました...
括弧が無限大の場合、"-"が表示された後のすべての数字は負の数にすることができるので、isPlusというflagを設定して、後の数字を削除します.

ソース


白準[0541]紛失したかっこ
https://www.acmicpc.net/problem/1541