Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 30.11.2015
Сообщений: 15

Найти непрерывный участок массива, в котором сумма положительных элементов максимальна

03.05.2018, 04:17. Показов 2503. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Решите подобную задачу:

Создать массив целых чисел и заполнить его случайными значениями.
Размер массива 100 и диапозон значений -100/100.
Задание: Нужно найти непрерывный участок, у котором сума положительных элементов максимальна

1)0 считаеться положительным числом,если в задании не оговорен какой-то другой его статус;
2)когда речь идет о какой-то последовательности чисел,имееться в виду последовательность с длиной,большей 1;
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.05.2018, 04:17
Ответы с готовыми решениями:

Как найти непрерывный участок элементов массива, сумма которых максимальна?
Нужно найти непрерывный участок массива из 10 элементов, сумма которых максимальная, и всё это сделать через указатели. Проблема...

Найти непрерывный участок из 10 элементов, сумма которых максимальна
Найти непрерывный участок из 10 элементов, сумма которых максимальна. Если размерность массива 200, а диапазон значений от 0 до 100.

Найти непрерывный участок из 10 элементов последовательности, сумма которых максимальна
Добрый вечер. Массив из 200 элементов с диапазоном 50 - 200, заполнение по рандому. Найти непрерывный участок из 10 элементов, сумма...

4
 Аватар для ПерС
587 / 490 / 371
Регистрация: 05.11.2013
Сообщений: 1,271
Записей в блоге: 6
03.05.2018, 12:28
Если не использовать стандартных векторов и алгоритмов, то самое простое так:

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
//Visual Studio 2015
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
 
int main() {
 const int n = 100;
 int a[n];
 srand(time(0)); //чтобы числа были разными каждый раз!
 for (int i=0; i<n; i++) {
  a[i] = -100 + rand()%201;
  cout << a[i] << " ";
 }
 
 
 int sum = 0; //текущая сумма чисел >=0
 int maxsum = 0; //максимальная из таких сумм
 int len = 0; //длина цепочки
 int maxlen = 0; //максимальная из длин цепочек
 int index = -1; //начало самой длинной цепочки
 for (int i = 0; i < n; i++) {
  if (a[i] >= 0) {
   sum += a[i];
   len++;
   if (len > 1) {
    if (sum > maxsum) {
     index = i + 1 - len;
     maxsum = sum; 
     maxlen = len;
    }
   }
  }
  else len = sum = 0;
 }
 
 if (index == -1) {
  cout << "Chain not found!";
 }
 else {
  cout << endl << "Length = " << maxlen << ", Summa = " << maxsum << ", Index = " << index;
  cout << endl << "Items = ";
  for (int i = index; i < index+ maxlen; i++) cout << a[i] << " ";
 }
 
 cin.get(); return 0;
}
0
25 / 23 / 34
Регистрация: 22.11.2012
Сообщений: 183
03.05.2018, 13:15
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
// SumArrNum.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <math.h>
#include <iostream>
 
 
 
using namespace std;
 
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian");
 
    int Array[100]; // собстна сам массив
    int sum = 0, nPosl = 0, tmp_sum = 0, p = 0; //сумма, кол-во послед, временная переменная для подсчета промежуточной суммы, количество чисел в послед
    bool flag = false; // признак того, что в последовательности больше 1ого числа
    cout<<"Массив:\n";
 
    for (int i = 0; i < 99; i++)
    {
        Array[i] = -100 + rand() % 200;
        cout<<Array[i]<<" ";
 
        if (Array[i] >= 0)
        {
            tmp_sum += Array[i];
            p++;
            if (p > 1)
                flag = true;
        }
        else 
        {
            if (sum > tmp_sum)
            {
                tmp_sum = sum;
            }   
            if (flag)
            {
                nPosl++;
                sum = tmp_sum;
                tmp_sum = 0;
                
            }
            continue;
        }
    }   
    cout<<"\n<<<<<<-----Итог---->>>>>>>\n";
    cout<<"Max sum: "<<sum<<"\nКол-во последовательностей: "<<nPosl;    
    cin>>sum;   
    return 0;
}
Пруф:
Миниатюры
Найти непрерывный участок массива, в котором сумма положительных элементов максимальна  
0
 Аватар для ПерС
587 / 490 / 371
Регистрация: 05.11.2013
Сообщений: 1,271
Записей в блоге: 6
03.05.2018, 16:13
На всякий случай, уточним:

C++
1
Array[i] = -100 + rand() % 200;
Это [-100;99], но не [-100;100]

Найти непрерывный участок массива, в котором сумма положительных элементов максимальна
В скрине как-то не прослеживается
0
25 / 23 / 34
Регистрация: 22.11.2012
Сообщений: 183
03.05.2018, 16:31
ПерС, воу, точно
Цитата Сообщение от ПерС Посмотреть сообщение
На всякий случай, уточним:
C++Выделить код
1
Array[i] = -100 + rand() % 200;
Это [-100;99], но не [-100;100]
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.05.2018, 16:31
Помогаю со студенческими работами здесь

Найти непрерывный участок из 10 элементов, сумма которых максимальная
Задание такое: Найти непрерывный участок из 10 элементов, сумма которых максимальная. Нельзя использовать индексацию. Максимальную...

Найти квадрат матрицы, в котором сумма диагональных элементов максимальна
В двумерном массиве найдите квадрат размером 3х3,в котором сумма диагональных элементов максимальна.Выведите его на экран. Только начинаю...

Как узнать в какой группе положительных элементов массива сумма максимальна?
Вот код нужно: Найти группу положительных элементов массива с максимальной суммой. Отрицательные элементы разбивают его на группы. Вот...

Найти строку матрицы, в которой сумма положительных элементов максимальна
Разработать программу, которая формирует двумерный массив L размером N x M вручную, или с помощью генератора случайных чисел (по выбору...

Найти непрерывный участок из 10 элементов, который имеет наибольшее среднее значение элементов
Найти непрерывный участок из 10 элементов, который имеет наибольшее среднее значение элементов Добавлено через 12 минут Дан массив...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru