На сайте в режиме реального времени публикуются решения контестных задач сервиса Codeforces.
Загружайте свои решения( здесь ) прямо на сайте. Подробнее. Жду ваших решений
 

По разделам

 

Задача String 70


Дана строка, содержащая латинские буквы и скобки трех видов: «()», «[]», «{}». Если скобки расставлены правильно (то есть каждой открывающей соответствует закрывающая скобка того же вида), то вывести число 0. В противном случае вывести или номер позиции, в которой расположена первая ошибочная скобка, или, если закрывающих скобок не хватает, число −1.

Код (C/C++)

#include <bits/stdc++.h>

using namespace std;

int main()
{
    string s, a = "";
    cin >> s;
    for(int i = 0; i < s.size(); ++i){
        if(s[i] == '(' || s[i] == '{' || s[i] == '[')
            a += s[i];
        else if(s[i] == ')'){
            if(a[a.size() - 1] == '(')
                a.erase(a.size() - 1);
            else{
                cout << i;
                return 0;
            }
        }
        else if(s[i] == ']'){
            if(a[a.size() - 1] == '[')
                a.erase(a.size() - 1);
            else{
                cout << i;
                return 0;
            }
        }
        else if(s[i] == '}'){
            if(a[a.size() - 1] == '{')
                a.erase(a.size() - 1);
            else{
                cout << i;
                return 0;
            }
        }
    }
    if(a.size())
        cout << -1;
    else
        cout << 0;

    return 0;
}

Код (Pascal)

program String70;
var
 S,C:String;
 i,Num1,Num2,Num3,error:integer;
 
begin
  Write('S: ');
  Readln(S);
 
  i:=1;
  error:=0;
  Num1:=0;
  Num2:=0;
  Num3:=0;
  while (i<=Length(S)) do
   begin
    if S[i]='(' then Num1:=Num1+1;
    if S[i]=')' then Num1:=Num1-1;
 
    if S[i]='[' then Num2:=Num2+1;
    if S[i]=']' then Num2:=Num2-1;
 
    if S[i]='{' then Num3:=Num3+1;
    if S[i]='}' then Num3:=Num3-1;
 
    if ((Num1<0) or (Num2<0) or (Num3<0)) and (error=0) then error:=i;
    inc(i);
   end;
 
  if error<>0 then Writeln(error)
   else if ((Num1>0) or (Num2>0) or (Num3>0)) then Writeln(-1)
    else Writeln(0);
end.
									




String. Абрамян
String 1 Просмотров: 44
String 2 Просмотров: 27
String 3 Просмотров: 38
String 4 Просмотров: 51
String 5 Просмотров: 34
String 6 Просмотров: 47
String 7 Просмотров: 25
String 8 Просмотров: 19
String 9 Просмотров: 195
String 10 Просмотров: 26
String 11 Просмотров: 40
String 12 Просмотров: 249
String 13 Просмотров: 30
String 14 Просмотров: 41
String 15 Просмотров: 50
String 16 Просмотров: 41
String 17 Просмотров: 38
String 18 Просмотров: 36
String 19 Просмотров: 161
String 20 Просмотров: 26
String 21 Просмотров: 39
String 22 Просмотров: 37
String 23 Просмотров: 62
String 24 Просмотров: 50
String 25 Просмотров: 49
String 26 Просмотров: 55
String 27 Просмотров: 61
String 28 Просмотров: 87
String 29 Просмотров: 58
String 30 Просмотров: 72
String 31 Просмотров: 44
String 32 Просмотров: 92
String 33 Просмотров: 61
String 34 Просмотров: 52
String 35 Просмотров: 51
String 36 Просмотров: 53
String 37 Просмотров: 54
String 38 Просмотров: 49
String 39 Просмотров: 54
String 40 Просмотров: 68
String 41 Просмотров: 55
String 42 Просмотров: 47
String 43 Просмотров: 53
String 44 Просмотров: 48
String 45 Просмотров: 46
String 46 Просмотров: 48
String 47 Просмотров: 36
String 48 Просмотров: 49
String 49 Просмотров: 52
String 50 Просмотров: 38
String 51 Просмотров: 48
String 52 Просмотров: 45
String 53 Просмотров: 32
String 54 Просмотров: 34
String 55 Просмотров: 52
String 56 Просмотров: 34
String 57 Просмотров: 51
String 58 Просмотров: 33
String 59 Просмотров: 27
String 60 Просмотров: 40
String 61 Просмотров: 28
String 62 Просмотров: 26
String 63 Просмотров: 68
String 64 Просмотров: 39
String 65 Просмотров: 50
String 66 Просмотров: 31
String 67 Просмотров: 21
String 68 Просмотров: 16
String 69 Просмотров: 40
String 70 Просмотров: 36

Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться