Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/41: Рейтинг темы: голосов - 41, средняя оценка - 4.83
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
1

Задача "Кинотеатр"

25.06.2017, 16:59. Показов 7993. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Для проверки нового метода прохода по матрице решил попытать счастье на сайте "Дистанционная подготовка". Большинство тестов пройдено, но, все же, в трех - неправильный ответ, а значит этот новый метод где-то ошибается или я чего-то еще не учел. Прошу о помощи всех, кому не лень будет помочь.

Условие задачи:

В кинотеатре n рядов по m мест в каждом. В двумерном массиве хранится информация о проданных билетах, число 1 означает, что билет на данное место уже продано, число 0 означает, что место свободно. Поступил запрос на продажу k билетов на соседние места в одном ряду. Определите, можно ли выполнить такой запрос.

Входные данные:

Программа получает на вход числа n и m. Далее идет n строк, содержащих m чисел (0 или 1), разделенных пробелами. Затем дано число k.

Выходные данные:

Программа должна вывести номер ряда, в котором есть k подряд идущих свободных мест. Если таких рядов несколько, то выведите номер наименьшего подходящего ряда. Если подходящего ряда нет, выведите число 0.

Примеры

Входные данные:

3 4
0 1 0 1
1 0 0 1
1 1 1 1
2

Выходные данные:

2

Мое решение:

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
#include <iostream>
 
using namespace std;
 
int main()
{
    int N, M, k, p, t;
    bool flag = true;
    cin >> N >> M;
    int A[N+1][M+1];
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
        {
            cin >> A[i][j];
        }
    }
    cin >> t;
    for (int i = 0; i < N; i++)
    {
        k = p = 0;
        for (int j = 0; j < M; j++)
        {
            if (A[i][j] == 1 && A[i][j+1] == 0)
            {
                k = j + 1;
            }
            if (A[i][j] == 0)
            {
                while (A[i][j] == 0)
                {
                    j++;
                }
                if ((j - k) == t)
                {
                    p++;
                }
                --j;
            }
        }
        if (p)
        {
            cout << i + 1 << endl;
            flag = false;
            break;
        }
    }
    if (flag)
        cout << 0 << endl;
    system("pause");
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.06.2017, 16:59
Ответы с готовыми решениями:

Задача Кинотеатр
Задача Кинотеатр X мальчиков и Y девочек пошли в кинотеатр и купили билеты на подряд идущие места...

Задача Кинотеатр. Runtime error
Тестирующая программа выдаёт ошибку Failed test #6 of 15. Runtime error Error: main:...

Задача "Кинотеатр"
В кинотеатре n рядов по m мест в каждом. В двумерном массиве хранится информация о проданных...

с++ кинотеатр
Здравствуйте не могли бы вы помочь мне написать программу на C++ &quot;Кинотеатр&quot; , программа будет в...

4
71 / 71 / 55
Регистрация: 04.06.2016
Сообщений: 237
25.06.2017, 17:38 2
C#
1
 int A[N+1][M+1];
Зачем размер массива увеличили?
0
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
25.06.2017, 18:44  [ТС] 3
Encephalopathy, здравствуйте! По-другому не выходит. Увеличиваю, чтобы на границе массива ошибок не возникало. Например, для

4 4
1 0 0 0
0 0 0 0
0 0 0 1
1 1 1 1
3

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

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
#include <iostream>
 
using namespace std;
 
int main()
{
    int N, M, k, p, t;
    bool flag = true;
    cin >> N >> M;
    int A[N+1][M+1];
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
        {
            cin >> A[i][j];
        }
    }
    cin >> t;
    for (int i = 0; i < N; i++)
    {
        k = p = 0;
        for (int j = 0; j < M; j++)
        {
            if (A[i][j] == 1 && A[i][j+1] == 0)
            {
                k = j + 1;
            }
            if (A[i][j] == 0)
            {
                while (A[i][j] == 0)
                {
                    j++;
                }
                if ((j - k) == t)
                {
                    cout << i + 1 << ": " << j - k << endl; //Здесь ошибки, если A[N][M]
                    p++;
                }
                --j;
            }
        }
    }
    system("pause");
    return 0;
}
0
71 / 71 / 55
Регистрация: 04.06.2016
Сообщений: 237
25.06.2017, 18:55 4
Fixer_84, А что за ошибки при промежуточном тестировании,я сейчас не имею возможность запустить программу.
0
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
25.06.2017, 19:03  [ТС] 5
Encephalopathy, не все варианты для заданного t (в каждой строке) выдает, а значит работает неправильно, а так для A[N+1][M+1] тестировал - все, вроде, работает.
0
25.06.2017, 19:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.06.2017, 19:03
Помогаю со студенческими работами здесь

Кинотеатр
В кинотеатре n рядов по m мест в каждом. В двумерном массиве хранится информация о проданных...

Кинотеатр (перевод кода с js на C++)
Добрый день! Уважаемые коллеги, помогите пожалуйста перенести код написанные на js в c++. Заранее...

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

Задача кинотеатр
Задача 5: Кинотеатр В кинотеатре места часто расставляют со сдвигом соседних рядов для удобства...

Задача кинотеатр
Помогите решить пожалуйста. Напишите программу, на вход которой с клавнатуры в первой подается...

Задача Кинотеатр
В первом ряду кинотеатра N + 2 мест, крайние места заняты персоналом кинотеатра, но N мест...

Задача про кинотеатр
Билеты в кинотеатр стоят: с 1 по 10 ряд - 3 р., с 11 по 15 ряд – 2 р.45 к., с 16 по 20 ряд – 2 р....


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru