[C++]伯俊1541,失われた括弧
白駿1541
アルゴリズム分類:greedyアルゴリズム(greedyアルゴリズム)
カッコのない数式にカッコを付けて、数式の値を最小限に抑える問題.
この問題を解決するには、どのような場合に最小値が必要かを知る必要があります. 55-50+40 -> 55-(50+40) 10+20-30+40-50 -> 10+20-(30+40)-50 前の2つの場合、各式の値は最小です.よく見ると、-記号が表示された後の数値は、最小値を決定するためにマイナス記号が必要です.
isminusがtrueの場合result-=stoi(num)
isminusがfalseの場合result+=stoi(num)
繰り返し文はi=inputです.最後の数字に対応する演算を実行するためsize()に進みます.
アルゴリズム分類:greedyアルゴリズム(greedyアルゴリズム)
カッコのない数式にカッコを付けて、数式の値を最小限に抑える問題.
この問題を解決するには、どのような場合に最小値が必要かを知る必要があります.
isminusがtrueの場合result-=stoi(num)
isminusがfalseの場合result+=stoi(num)
繰り返し文はi=inputです.最後の数字に対応する演算を実行するためsize()に進みます.
#include <iostream>
#include <string>
using namespace std;
int main(){
string input,num;
int result=0;
bool isminus=false;
cin >> input;
for(int i=0; i<=input.size(); i++){
if(input[i]=='+'||input[i]=='-'||i==input.size()){
if(isminus){
result-=stoi(num);
num="";
}
else{
result+=stoi(num);
num="";
}
}
else{
num+=input[i];
}
if(input[i]=='-'){
isminus=true; //input[i]가 '-'인 경우, isminus=true;
}
}
cout << result;
}
Reference
この問題について([C++]伯俊1541,失われた括弧), 我々は、より多くの情報をここで見つけました https://velog.io/@landlala/c-백준-1541-잃어버린-괄호テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol