Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
1 / 1 / 0
Регистрация: 04.11.2017
Сообщений: 58
1

[Массив] Эдди Морра и русская мафия

29.08.2019, 20:57. Показов 2460. Ответов 11
Метки нет (Все метки)

Здравствуйте, суть задачи на фото показано, буду рад если поможите
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Вложения, ожидающие проверки
Тип файла: png Снимок.PNG
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.08.2019, 20:57
Ответы с готовыми решениями:

Мафия
Всем известно, что главное в игре «мафия» - чаты сообщений. Андрей считает игру протестированной,...

Простенькая игра мафия
Здравствуйте,хочу создать игру "Мафия"(Чтобы просто играть со знакомыми,хочу свой клиент,все сам...

Мафия 2 тормозит в Windows 7
ребят, вопрос в следующем, я играю в мафия 2, недавно играл на Windows xp sp3, все было...

Описать игру мафия на языке java
Добрый вечер. Нужна помощь. Задание: создать классы, описывающие игру мафия. Минимум 3-5 класса.

11
zss
29.08.2019, 21:54
  #2
 Комментарий модератора 
П.5.18.Правил
Запрещено размещать задания и решения в виде картинок и других файлов с их текстом.
Перепечатайте
0
488 / 285 / 128
Регистрация: 30.10.2018
Сообщений: 1,309
29.08.2019, 21:56 3
Лучший ответ Сообщение было отмечено Xait как решение

Решение

Xait, Мое решения, с примером совпадает, как по мне, даже думать не пришлось, как писал код, единожды ошибся перепутав знаки равенства в первой проверке в цикле, а так то проще простого:

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
int main()
{
    int N;
    cin >> N;
    int* arr = new int[N];
    for (int i = 0; i < N; i++)
        cin >> arr[i];
 
    int goodBiggestIndex = -1, goodSmallestIndex = -1, goodDiff = -1;
    for(int i = 0; i < N; i++)
        for (int j = i; j < N; j++)
        {
            if (arr[i] >= arr[j])
                continue;
            if (arr[j] - arr[i] <= goodDiff)
                continue;
 
            goodBiggestIndex = j;
            goodSmallestIndex = i;  
            goodDiff = arr[j] - arr[i];
        }
    if (goodDiff == -1)
    {
        std::cout << 0 << " " << 0;
    }
    else
    {
        std::cout << goodSmallestIndex + 1 << " " << goodBiggestIndex + 1;
    }
 
    return 0;
}
1
1 / 1 / 0
Регистрация: 04.11.2017
Сообщений: 58
29.08.2019, 22:14  [ТС] 4
спасибо, очеень помогли))
0
811 / 499 / 210
Регистрация: 19.01.2019
Сообщений: 1,196
29.08.2019, 22:46 5
Без массива:
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
#include <iostream>
 
int main() {
    size_t n;
    std::cin >> n;
    uint32_t buff, diff(0);
    std::pair<uint32_t, size_t> min(UINT32_MAX, 0);
    size_t ilhs(0), irhs(0);
 
    for (int i = 0; i < n; ++i) {
        std::cin >> buff;
        if (buff < min.first) {
            min = { buff, i };
        }
        else if (buff - min.first > diff) {
            ilhs = min.second + 1;
            irhs = i + 1;
            diff = buff - min.first;
        }
    }
 
    std::cout << ilhs << ' ' << irhs << '\n';
    return 0;
}
1
488 / 285 / 128
Регистрация: 30.10.2018
Сообщений: 1,309
30.08.2019, 08:31 6
Цитата Сообщение от nalbe666 Посмотреть сообщение
Без массива:
Цитата Сообщение от Xait Посмотреть сообщение
[Массив]
Ничего не имею против, но делал именно по описанию ТС
0
1 / 1 / 0
Регистрация: 04.11.2017
Сообщений: 58
01.09.2019, 10:00  [ТС] 7
nalbe666, kitsoRik, попробовал оба варианта решений но у них одно и таже ошибка не знаю почему после 7 теста говорить ошибка


Сам тоже попробовал этого решить вот что написал, доходит до 11 теста и говорить что Превышено максимальное время работы

Поможите оптимизировать???


Кликните здесь для просмотра всего текста
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
#include<iostream>
#include <vector>
using namespace std;
int main() 
{
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(nullptr);
    int a, b = 0, x = 0;
    int profit = 0;
    int lastProfit = 0;
    bool first = false;
    cin >> a;
    vector<int> massiv(a);
    for (int j = 0; j < a; ++j) {
        cin >> massiv[j];
    }
    for (int k = 0; k < a - 1; ++k) {
        int c = k + 1;
        for (int i = k + 1; i < a; ++i) {
            if (massiv[i] >= massiv[c]) {
                c = i;
            }
        }
        profit = 100000 / massiv[k] * massiv[c] - 100000;
        if (profit > lastProfit) {
            lastProfit = profit;
            b = k;
            x = c;
            first = true;
        }
 
    }
    if (first) {
        cout << b + 1 << " " << x + 1;
    }
    else 
    {
        cout << 0 << " " << 0;
    }
    return 0;
}
0
811 / 499 / 210
Регистрация: 19.01.2019
Сообщений: 1,196
01.09.2019, 10:14 8
Текст задачи-то где?)
0
1 / 1 / 0
Регистрация: 04.11.2017
Сообщений: 58
01.09.2019, 11:12  [ТС] 9
nalbe666, Вот текст задачи простое изб. https://www.cyberforum.ru/atta... 1567101377

Добавлено через 1 минуту
После приема очередной таблетки NZT у Эдди Морра появилась великолепная идея — взять
деньги у русского гангстера и преумножить их. Договорившись о встрече с Геннадием, Эдди взял в
долг $100 000. Как же в короткий срок заработать писателю, располагающему немаленькой суммой?
Подумав немного, Эдди понял, что может предсказать курс акций Одной Очень Нестабильной
Компании (ООНК) на ближайшие N дней.
К сожалению, пока новоиспеченный брокер занимался прогнозированием, действие NZT закончилось, а у него совсем не осталось таблеток. Так как с NZT в последнее время наблюдаются трудности, а Эдди наслышан о страшных последствиях прекращения приема, заниматься покупкой и
продажей акций ООНК придется вам (пока Эдди занимается покупкой NZT). Помогите Эдди избежать неприятного разговора с Геннадием: найдите день, в который следует купить акции, и день, в
который следует их продать. Разумеется, продавать акции можно только после покупки.
В силу технических особенностей биржи купить и продать акции вы можете только один раз.
Имейте в виду, что Эдди уже придумал ранее, как можно купить нецелое число акций.
И, конечно же, чем больше прибыли вы получите, тем меньше проблем подарит Геннадий Эдди.
Формат входных данных
В первой строке задано число N — количество дней (1 <= N <= 100 000). Во второй строке задано
N натуральных чисел ai (1 <= i <= N, 1 <= ai <= 5000), обозначающих стоимость акций ООНК (в $) в
i-й день.
Формат выходных данных
Выведите два числа: первое — номер дня, в который следует купить акции, второе — номер дня,
в который акции следует продать. Дни нумеруются с единицы.
Если максимальную прибыль можно получить несколькими способами, выведите любой. Если
же прибыль получить не удастся, выведите 2 нуля.

Примеры
ввод: 6
6 5 4 3 2 1
Вывод: 0 0


Ввод: 5
10 4 2 11 8
Вывод: 3 4


Замечание
В первом примере прибыль получить не удастся вне зависимости от выбранных дней. Во
втором примере выгоднее всего купить акции в 3-й день и продать в 4-й. Тогда Эдди получит
$100000
$2 · $11 − $100000 = $450000.
0
811 / 499 / 210
Регистрация: 19.01.2019
Сообщений: 1,196
01.09.2019, 12:05 10
Лучший ответ Сообщение было отмечено Xait как решение

Решение

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
#include <iostream>
 
int main() {
    size_t n;
    std::cin >> n;
    uint32_t buff;
    double diff(1.);
    std::pair<uint32_t, size_t> min(UINT32_MAX, 0);
    size_t ilhs(0), irhs(0);
 
    for (size_t i = 0; i < n; ++i) {
        std::cin >> buff;
        if (buff < min.first) {
            min = { buff, i };
        }
        else if (1. * buff / min.first > diff) {
            ilhs = min.second + 1;
            irhs = i + 1;
            diff = 1. * buff / min.first;
        }
    }
 
    std::cout << ilhs << ' ' << irhs << '\n';
    return 0;
}
1
1 / 1 / 0
Регистрация: 04.11.2017
Сообщений: 58
01.09.2019, 12:21  [ТС] 11
nalbe666, Спасибо вам огромное, спервого раза все отлично, можете помочь и с этой задачой??
Массив: Последнее дело Оушена. Составьте маршрут, следуя которому, Оушен успеет ограбить все банки.
0
nalbe666
01.09.2019, 12:23     [Массив] Эдди Морра и русская мафия
  #12

Не по теме:

Xait, Почему нет, побью рекорд по невнимательности на этой неделе.

0
01.09.2019, 12:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.09.2019, 12:23
Привет! Вот еще темы с ответами:

Написание программы (Мафия) для Windows
Здравствуйте уважамые форумчане, хочу написать программу в помощь ведущему для игры в мафию, мафия...

Игра в мафию, вероятность вытащить карту "мафия"
Всем привет! Возник следующий вопрос. Человек играет в мафию, где он каждую игру выбирает карту, он...

Алгоритм выдачи роли в игре "Мафия"
Вообщем, встал перед такой вот проблемой: Игроков может быть X&gt;8. Мафия: 1 к 4, комиссары: 1 к 2...

Оптимизация кода сервера (игра "Мафия")
Здравствуйте, пишу сервер для игры мафия. Я только начал, так что это ещё не весь код. Подскажите...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.