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

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

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

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

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

1)0 считаеться положительным числом,если в задании не оговорен какой-то другой его статус;
2)когда речь идет о какой-то последовательности чисел,имееться в виду последовательность с длиной,большей 1;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.05.2018, 04:17
Ответы с готовыми решениями:

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

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

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

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

4
585 / 488 / 371
Регистрация: 05.11.2013
Сообщений: 1,265
Записей в блоге: 6
03.05.2018, 12:28 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
//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 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
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
585 / 488 / 371
Регистрация: 05.11.2013
Сообщений: 1,265
Записей в блоге: 6
03.05.2018, 16:13 4
На всякий случай, уточним:

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

Найти непрерывный участок массива, в котором сумма положительных элементов максимальна
В скрине как-то не прослеживается
0
25 / 23 / 34
Регистрация: 22.11.2012
Сообщений: 183
03.05.2018, 16:31 5
ПерС, воу, точно
Цитата Сообщение от ПерС Посмотреть сообщение
На всякий случай, уточним:
C++Выделить код
1
Array[i] = -100 + rand() % 200;
Это [-100;99], но не [-100;100]
0
03.05.2018, 16:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.05.2018, 16:31
Помогаю со студенческими работами здесь

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

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

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

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


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

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