Advanced C#- Stacks And Queues Excercises - 07. Balanced Parenthesis
здр, някой знае ли последния тест в judge какво проверява че съм зациклил на 87 точки ето кода: http://pastebin.com/cJFUJwkC
здр, някой знае ли последния тест в judge какво проверява че съм зациклил на 87 точки ето кода: http://pastebin.com/cJFUJwkC
Ще ти дам жокер : трябва да проверяваш ако имаш затваряща скоба дали съоветсва на последната отваряща
ето го последният тест,аз също се опитвам да я докарам до 100
()(((({{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}))))
Единият от тестовете не минаваше, защото има подводен камък, който е че може да имаме следната "отваряща" скоба ) и съответно "затварящата" трябва да е (, което няма голяма логика ама ...
А за теста, който си писал, че е последният. Според мен отговора е подаден грешно в Judge, няма как да започва с () и да свършва с )) и да бъде YES резултата, не отговаря на условието на задачата. Иначе като го "хард корнах" и псожих просто if проверка за този string и тогава да бие YES, даде 100/100. Но според мен е сбъркано в Judge...
Благодаря ти много, това ме побъркваше!!!!!
В условието обаче изрично е описано, че "Each character of the sequence will be one of {, }, (, ), [, ].". Никъде не се споменава за ),( като валидна комбинация.
Моля, някой от СофтУни да оправи условието за да не докарват психически разтройства на студентите си :)
И аз се чудих много време, благодаря!
Ето едно решение за 100/100
https://pastebin.com/iCamUJ8Q
дано съм бил полезен
С това решение може и да имаш 100 точки, но има грешка, която е допуснал и лектора на упражненията. Ако вкараш първо затваряща скоба програмата гърми.
Здравейте!
На мен Judge - а, също ми дава 77 точки и не мога да разбера, какво не съм предвидил ... !
using System;
using System.Collections.Generic;
class _07_00_BalancedParenthesis
{
static void Main()
{
string inStr = Console.ReadLine();
Queue<int> que = new Queue<int>();
int n = inStr.Length / 2;
Queue<char> que1 = new Queue<char>();
Queue<char> que2 = new Queue<char>();
for (int i = 0; i < n; i++)
{
que1.Enqueue(inStr[i]);
que2.Enqueue(inStr[inStr.Length - 1 - i]);
char a = que1.Dequeue(), b = que2.Dequeue();
if ( a == '{' && b == '}' ) que.Enqueue(i);
if ( a == '}' && b == '{' ) que.Enqueue(i);
if ( a == '[' && b == ']' ) que.Enqueue(i);
if ( a == ']' && b == '[' ) que.Enqueue(i);
if ( a == '(' && b == ')' ) que.Enqueue(i);
if ( a == ')' && b == '(' ) que.Enqueue(i);
if ( a == ' ' && b == ' ' ) que.Enqueue(i);
}
if (que.Count == n)
{
Console.WriteLine("YES");
}
else Console.WriteLine("NO");
}
}
Здравей, valenteeen,
погледнах решението ти. Ще ти дам една идея - имаш нужда само от един Stack<char>. Когато прочетеш отваряща скоба, слагаш я вътре. При прочитане на затваряща, взимаш скоба от стека и проверяваш дали си съответства със затварящата.
УСПЕХ!
Здравейте! Благодаря за съвета! Ще се опитам да го изпълня! Дано да се получи очавания ефект!!