Advanced C#- Stacks And Queues Excercises - 07. Balanced Parenthesis
здр, някой знае ли последния тест в judge какво проверява че съм зациклил на 87 точки ето кода: http://pastebin.com/cJFUJwkC
здр, някой знае ли последния тест в judge какво проверява че съм зациклил на 87 точки ето кода: http://pastebin.com/cJFUJwkC
В нета намерих следната дефиниция на Balanced Parenthesis:
Balanced parentheses means that each opening symbol has a corresponding closing symbol and the pairs of parentheses are properly nested.
Не знам какво има в последния тест, но по горната дефиниция аз успях да измисля тест, с който програмата ти не се справя: ({}[]). На този тест трябва да получиш изход YES.
Ще ти дам жокер : трябва да проверяваш ако имаш затваряща скоба дали съоветсва на последната отваряща
Здравейте!
На мен 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>. Когато прочетеш отваряща скоба, слагаш я вътре. При прочитане на затваряща, взимаш скоба от стека и проверяваш дали си съответства със затварящата.
УСПЕХ!
Здравейте! Благодаря за съвета! Ще се опитам да го изпълня! Дано да се получи очавания ефект!!
ето го последният тест,аз също се опитвам да я докарам до 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 точки, но има грешка, която е допуснал и лектора на упражненията. Ако вкараш първо затваряща скоба програмата гърми.