Ошибка TL в решении задачи

209
20 февраля 2018, 07:01

Есть задача:

На различных мероприятиях команда стажировок регулярно разыгрывает призы в лотерею.

Организаторы выбирают 10 случайных различных чисел от 1 до 32. Каждому участнику выдается лотерейный билет, на котором записаны 6 различных чисел от 1 до 32. Билет считается выигрышным, если в нем есть не менее 3 выбранных организаторами числа.

Помогите Юле, напишите программу, которая будет сообщать, какие билеты выигрышные.

Формат ввода

В первой строке входных данных записаны 10 различных целых чисел ai (1 ≤ ai ≤ 32) — выбранные организаторами числа.

Во второй строке записано одно целое число n (1 ≤ n ≤ 1000) — количество лотерейных билетов, выданных на мероприятии.

В каждой из n последующих строк записаны 6 различных целых чисел bj (1 ≤ bj ≤ 32) — числа, записанные на очередном лотерейном билета.

Формат вывода

Выведите n строк. Для каждого лотерейного билета в порядке следования во входных данных выведите строку Lucky, если билет выигрышный, иначе выведите Unlucky.

И вот мой код:

#include <iostream>
using namespace std;
int main()
{
    int lucky [10], n, copy1, copy2 = 0;
    for (int i = 0; i < 10; i ++)
    {
        cin >> lucky [i];
    }
    cin >> n;
    int res [n];
    for (int i = 0; i < n; i ++)
    {
        for (int j = 0; j < 6; i ++)
        {
            cin >> copy1;
            for (int k = 0; k < 10; k ++)
            {
                if (copy1 == lucky [k]) copy2 ++;
            }
        }
        if (copy2 >= 3) res [i] = 1;
        else res [i] = 0;
        copy2 = 0;
    }
    for (int i = 0; i < n; i ++)
    {
        if (res [i] == 1) cout << "Lucky\n";
        else cout << "Unlucky\n";
    }
}

Пишет - превышено время исполнения, но ошибку найти так и не могу. Набирал с телефона, за формат кода прошу простить.

Answer 1

Я бы вообще делал так:

int main ()
{
    int n;
    int lucky[33] = { 0 };
    for(int i = 0; i < 10; ++i)
    {
        cin >> n;
        lucky[n] = 1;
    }
    cin >> n;
    for(int i = 0; i < n; ++i)
    {
        int sum = 0;
        for (int j = 0; j < 6; ++j)
        {
            int m;
            cin >> m;
            sum += lucky[m];
        }
        cout << ((sum >= 3) ? "Lucky\n" : "Unlucky\n");
    }
}

И еще - учтите, что

cin >> n;
int res [n];

такое стандарт С++ не разрешает!

Answer 2

Попробуйте как-нибудь так. Ваш вариант не компилируется.

#include <iostream>
using namespace std;
const int numbers_in_one_ticket = 6;
const int lucky_numbers = 10;
int main() {
    int lucky[lucky_numbers], number_of_tickets = 0;
    cout << "Enter 10 lucky numbers\n";
    for (int i = 0; i < lucky_numbers; i++)
    {
        cin >> lucky[i];
    }
    cout << "\nEnter number of tickets\n";
    cin >> number_of_tickets;
    int **tickets = new int * [number_of_tickets];
    for (int i = 0; i < number_of_tickets; i++)
    {
        tickets[i] = new int[numbers_in_one_ticket];
    }
    srand(NULL);
    for (int j = 0; j < number_of_tickets; j++)
    {
        int numbers_in_common = 0;
        for (int i = 0; i < numbers_in_one_ticket; i++)
        {
            tickets[j][i] = rand() % 32;
            for (int i = 0; i < lucky_numbers; i++)
            {
                if (lucky[i] == tickets[j][i])
                    numbers_in_common++;
            }
        }
        if (numbers_in_common >= 3)
        {
            for (int i = 0; i < numbers_in_one_ticket; i++)
            {
                cout << tickets[j][i] << " ";   
            }
            cout << "Lucky\n";
        }
        else
        {
            for (int i = 0; i < numbers_in_one_ticket; i++)
            {
                cout << tickets[j][i] << " ";
            }
                cout << "Unlucky\n";
        }
    }
    delete[] tickets;
}
READ ALSO
Regex и кириллица

Regex и кириллица

Возникла та же проблема, что и в этой теме 2014 года - Регулярные выражения и кириллица Собстна, вопрос: за 4 года в плюсах не появился способ...

273
Не находит библиотеки .h (C++, Visual Studio Community 2017)

Не находит библиотеки .h (C++, Visual Studio Community 2017)

VStudio не находит библиотеки, такие как conioh, time

221
Правильная остановка потока

Правильная остановка потока

Добрый деньИмеется нативный винапи поток, создаваемый функцией CreateThread(

192
Не собирается проект Veyon 4.0.4

Не собирается проект Veyon 4.0.4

При сборке проекта выдает следующую ошибку:

179