Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 15.11.2016
Сообщений: 49

Есть 12 скобок. Подсчитать и напечатать все синтаксически верные варианты

24.11.2016, 12:09. Показов 3112. Ответов 24

Студворк — интернет-сервис помощи студентам
пример синтаксически верного варианта: ()()()()()(),(((((())))))
пример синтаксически неверного варианта: )()()()()()(,))))))((((((
надо просчитать все варианты и выдать пользователю число верных/неверных вариантов
вот что я написал
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace DZ
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        //0-открывающая 1-закрывающая
        string st = "";
        int x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12;
        int b;
        int y;
        int chislopar=0;
        int pr = 0,nepr=0;
        private void button1_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < 2; i++)
            {
                x1 = i;
                for (int q = 0; q < 2; q++)
                {
                    x2 = q;
                    for (int w = 0; w < 2; w++)
                    {
                        x3 = w;
                        for (int r  = 0; r < 2; r++)
                        {
                            x4 = r;
                            for (int t = 0; t < 2; t++)
                            {
                                x5 = t;
                                for (int y = 0; y < 2; y++)
                                {
                                    x6 = y;
                                    for (int u = 0; u < 2; u++)
                                    {
                                        x7 = u;
                                        for (int o = 0; o < 2; o++)
                                        {
                                            x8 = o;
                                            for (int p = 0; p < 2; p++)
                                            {
                                                x9 = p;
                                                for (int a = 0; a < 2; a++)
                                                {
                                                    x10 = a;
                                                    for (int s = 0; s < 2; s++)
                                                    {
                                                        x11 = s;
                                                        for (int d = 0; d < 2; d++)
                                                        {
                                                            x12 = d;
                                                            st=x1.ToString()+x2.ToString()+x3.ToString()+x4.ToString()+x5.ToString()+x6.ToString()+x7.ToString()+x8.ToString()+x9.ToString()+x10.ToString()+x11.ToString()+x12.ToString();
                                                            string st1 = st;
                                                            b++;
                                                            
                                                            for (int f = 0; f < st1.Length; f++)
                                                            {
                                                                if (st1[f] == '0'||f!=11)
                                                                    for (int f1 = f + 1; f1 < st1.Length; f1++)
                                                                    {
                                                                        if (st1[f1] == '1')
                                                                        {
                                                                            st1 = st1.Remove(f1, 1);
                                                                            st1 = st1.Remove(f, 1);
                                                                            y++;
                                                                            
                                                                            break;
                                                                        }
                                                                    }
                                                                if (st1 == "")
                                                                {
                                                                    break;
                                                                }
                                                            }
                                                            
                                                            if (y == 6)
                                                            {
                                                                int n=0;
                                                                n++;
                                                                textBox2.Text = n.ToString();
                                                                //listBox1.Items.Add(st + ":синтаксически верно");
                                                            }
                                                            else
                                                            {
                                                                //listBox1.Items.Add(st + ":синтаксически неверно");
                                                            }
                                                            y = 0;
                                                        }
                                                    }
                                                }
                                            }
                                        }
я заменил скобки числами 0-'(' 1-')' и написал 12 циклов под каждую скобку потом брал открывающую скобку и искал ей закрывающую если находил то удалял их и добавлял переменной y единичку потом после проверке проверял y если он равен 6 тогда вариант правильный если нет неправильный

программа перестает отвечать на около 000001111111
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.11.2016, 12:09
Ответы с готовыми решениями:

Подсчитать все возможные варианты судоку
Лома голову, как посчитать все возможные варианты судоку. Как при этом описать правило, которое описывало что количевство его должно быть...

Как подсчитать все возможные варианты суммы массива
Допустим у нас есть целое число N и массив состоящий из целых чисел, и надо узнать даёт ли сумма либых чисел из массива это число.

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

24
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
24.11.2016, 20:19
Студворк — интернет-сервис помощи студентам
IvinVlad,
А сложно самому запустить программу и 'пробить' самые сомнительные варианты расстановки скобок?
А метод вернет false.
0
907 / 664 / 318
Регистрация: 23.10.2016
Сообщений: 1,543
24.11.2016, 20:26
Еще вариантик
C#
1
2
3
4
5
6
7
8
        private static int GetCorrectCount(int length = 12)
        {
            if (length == 0) return 1;
            int result = 0;
            for (int i = 2; i <= length; i += 2)
                result += GetCorrectCount(i - 2)*GetCorrectCount(length - i);
            return result;
        }
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10428 / 5158 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
24.11.2016, 23:26
Цитата Сообщение от BozKurt Посмотреть сообщение
Storm23, для общей длины в четыре скобки (0xF) выдаёт не верные результаты, подозреваю, что и для остальных происходит тоже самое. Да и для 0x3 для неверных перестановок правильно значение три: ((, )) и )(.
Вы ошибаетесь, мой код считает правильно.
Для трех скобок выдает:
Correct: 0
Wrong: 3
Для четырех:
Correct: 2
Wrong: 13
Что тоже правильно. Вы видимо в коде не заменили верхний предел во внутреннем цикле (там где от 0 до 12).

Цитата Сообщение от IvinVlad Посмотреть сообщение
вариант ))))))(((((( программа сочтет правильным
Нет, не сочтет. Этот вариант отсекается условием if (close > open) break;

Цитата Сообщение от IvinVlad Посмотреть сообщение
смысл программы выдавать подсчитать синтаксически правильную расстановку скобок а не их количество
Вы противоречите сами себе. В вашем первом посте явно написано:
надо просчитать все варианты и выдать пользователю число верных/неверных вариантов
0
307 / 284 / 102
Регистрация: 06.05.2014
Сообщений: 861
30.11.2016, 09:26
Цитата Сообщение от Storm23 Посмотреть сообщение
Для четырех:
Correct: 2
Wrong: 13
Что тоже правильно.
Ну как же? :-)
(()) - четыре скобки, но тем не менее так же вполне верный результат.
Да и 0x3 - это две скобки, для которых неверных значений три: ((, )) и )(, Ваш алгоритм на эти входные данные говорит, что ошибочных вариантов два.
0
907 / 664 / 318
Регистрация: 23.10.2016
Сообщений: 1,543
30.11.2016, 20:01
Storm23, надо выводить (to - correct + 1)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.11.2016, 20:01

200 л бензина нужно разлить в баки емкостью 60, 45 и 25 литров. Получить все возможные варианты разлива. Подсчитать их количество
200 л бензина нужно разлить в баки емкостью 60, 45 и 25 литров. Получить все возможные варианты разлива. Подсчитать их количество.

Динамические структуры. Проверить есть ли заданная строка символов правильным выражением содержащий все виды скобок.
Проверить есть ли заданная строка символов правильным выражением содержащий все виды скобок. Вот что успел написать за пару. type ...

Вывести все корректные комбинации пар круглых скобок, которые можно сформировать из n скобок
Вывести все корректные комбинации пар круглых скобок, которые можно сформировать из n скобок, которые закрываются и открываются. Количество...

Определить, есть ли такой элемент, который входит во все строки массива, но не во все столбцы массива и напечатать его.
Задан прямоугольный массив целых чисел. Определить, есть ли такой элемент, который входит во все строки массива, но не во все столбцы...

Нужно напечатать все что есть в MS FlexGrid-е на форме
Нужно напечатать все что есть в MS FlexGrid-е на форме. Может кто-то уже делал это, поделитесь пожалуйста.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru