[C言語]伯俊1541:失われた括弧
構想
負の値を基準にかっこを入れればいいです.
55 - (50 + 40) = - 35
この方法で最高価格を求めればいいです.
どのようにすればいいか考えていますが、文字列の形で行うべきだと思います.wa+を処理するからです.
ではstr配列に55-50+40,str[0]='5',str[1]='5',str[2]='-'...このように記憶するには、まず各ビット数をint型、すなわち「5」「5」を数字55に変換する.
また「-」は別々に出して処理し、真ん中に+を挟んでいるのでコードが長くなります.あまり食べません.
その結果、他の人のコードが見えました.
私が塞いだ部分
while (i < len)
{
if (str[i] == '-')
{
i = i + 1;
while (str[i] != '\0' || str[i] == '-')
{
if (str[i] >= '0' && str[i] <= '9')
{
sum = sum * 10;
sum = sum + str[i] - '0';
}
else if (str[i + 1] == '\0' || str[i + 1] == '-' || str[i + 1] == '+')
{
arr[k] = sum * -1;
sum = 0;
k++;
}
i++;
}
}
else if部分がいつも落ちるのがおかしい私はもともとあなたに同じことを処理してあげたいと思っていましたが、時間がかかりすぎました.他人のコードを見て、理解してみましょう.他者コード
#include <stdio.h>
#include <string.h>
int main(void)
{
char str[51];
int arr[25] = {0};
scanf("%s", str);
int len = strlen(str);
int i, j = 0, k = 0, temp = 0, sum = 0, result = 0;
for (i = 0; i <= len; i++)
{
if (str[i] == '-' || i == len)
{
sum = sum + temp;
arr[j] = sum;
j++;
temp = 0;
sum = 0;
}
else if (str[i] == '+')
{
sum = sum + temp;
temp = 0;
}
else
{
temp = temp * 10;
temp = temp + str[i] - '0';
}
}
result = arr[0];
for (i = 1; i < j; i++)
{
result = result - arr[i];
}
printf("%d", result);
}
https://henrynoh.tistory.com/20 論理は同じです.目標も同じです.最後にint型配列を計算する方法
複文は1つのみ使用され、-+でない場合は数値が蓄積されます.そして、-+を見ると蓄積した数字が保存されます.
詳細はi=len条件で、最後よりもう一度回して、最後まで保存できます.これはデバッグすると直感的になります.
他者コード
#include<stdio.h>
void main(){
int i=0,n,a; char c;
//for문을 이용해 입력 및 조건식 처리
for(scanf("%d",&n);scanf("%c",&c),c!=10;){
//-일때 i=1로 바꿔준다.
if(c=='-') i=1;
scanf("%d",&a);
//i=1일때, 즉, -부호가 최초로 들어왔을 때 n에서 계속 빼준다.
if(i) n-=a;
//i=0, 즉 아직 -부호가 들어오지 않았거나, 처음 입력받았을 땐 n에 입력받은 수를 더해준다.
else n+=a;
}
printf("%d",n);
}
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=occidere&logNo=220833166496 本当にクレイジーな方法だ条件をscanfで受け入れ,直ちに計算した.
for文がどのように返されたのかよく分かりませんが、本当に気が狂っているようです.
しかし、この問題はなぜGredyなのか.
文字列の問題のようです.
Reference
この問題について([C言語]伯俊1541:失われた括弧), 我々は、より多くの情報をここで見つけました https://velog.io/@kimmainsain/C언어-백준-1541-잃어버린-괄호テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol