Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
myxayan
3 / 3 / 8
Регистрация: 16.10.2012
Сообщений: 93
#1

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

11.04.2013, 16:40. Просмотров 1656. Ответов 21
Метки нет (Все метки)

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

http://www.cyberforum.ru/cpp-beginners/thread142916.html
ну вот я сделал, но только будет работать, если есть только один отрицательный элемент.
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
#include<iostream>
#include<conio.h>
using namespace std;
 
int main()
 {
          const int n=8;
          int i,a[n],z,c,p,d,k;
          
          cout<<"vvod elem massiva"<<endl;
          for (i=0;i<n;i++)
           cin>>a[i];
           z=0; c=0;
           for (i=0;i<p;i++)
            if (a[i]>0)
            z=z+a[i];
        else p=i; k=0;
         for (i=p+1;i<n;i++)
           if (a[i]>0) 
         d=d+a[i];
         if (z>d)
         
          for (i=0;i<p;i++)
          cout<<a[i]<<"    ";
          else  
           
          for (i=p+1;i<n;i++)
          cout<<a[i]<<"    ";
          
        getch();
       return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2013, 16:40
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Массив: Найти такую неразрывную последовательность положительных чисел, сумма элементов у которой максимальная. (C++):

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

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

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

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

Выполнить сортировку элементов в той строке матрицы сумма элементов в которой максимальная
как я могу писать эту задачу. Задана матрица целых чисел. Выполнить сортировку...

21
Ternsip
663 / 191 / 29
Регистрация: 10.05.2012
Сообщений: 595
11.04.2013, 18:33 #21
yoghurt92,
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
#include <iostream>
#include <cmath>
#include <algorithm>
#include <vector>
#include <limits>
#include <queue>
#include <string>
#include <set>
#include <stack>
#include <tuple>
 
using namespace std;
 
const int NMAX = 10;
vector < vector <int> > ans(NMAX, vector <int> (NMAX, -1));
vector < int > a(NMAX);
int bi = 0, bj = 0;
 
int solv(int i, int j){
    if (i > j)
        return 0;
    if (ans[i][j] != -1)
        return ans[i][j];
    if (a[i] <= 0){
        ans[i][j] = -1;
        solv(i+1, j);
    }else 
        ans[i][j] = solv(i+1, j) + a[i];
    if (ans[bi][bj] < ans[i][j]){
        bi = i;
        bj = j;
    }
    return ans[i][j];
}
 
 
int main(){         
    freopen("input.txt", "rt", stdin);
    freopen("output.txt", "wt", stdout);
    int n;
    cin >> n;
    for (int i = 0; i < n; i++)
        scanf("%d", &a[i]);
    ans[0][0] = a[0];
    for (int i = 0; i < n; i++)
        solv(0, i);
    printf("from %d to %d sum = %d", bi+1, bj+1, ans[bi][bj]); // один-индексация
    return 0;
}
1
DiffEreD
1441 / 778 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
11.04.2013, 21:10 #22
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
#include <iostream>
#include <array>
#include <functional>
#include <algorithm>
#include <iterator>
 
int main()
{
    setlocale(0,"");
    
    const size_t size = 28;
    std::array<int, size> ar = {-4,6,2,6,-7,-3,6,0,4,3,8,1,-9,-2,4,6,7,1,3,1,0,2,-6,4,3,8,-7,4};
    
    int sum = 0;
    std::pair<std::array<int, size>::iterator, std::array<int, size>::iterator> interval;
    for (auto start = ar.begin(), stop = start; start <= ar.end(); start = ++stop)
    {
        start = std::find_if(start, ar.end(), std::bind(std::greater_equal<int>(), std::placeholders::_1, 0));
        if (start != ar.end()) 
        {
            stop =  std::find_if(std::next(start, 1), ar.end(), std::bind(std::less<int>(), std::placeholders::_1, 0));
            int current_sum = std::accumulate(start, stop, 0);
            if (current_sum > sum)
            {
                sum = current_sum;
                interval = std::make_pair(start, stop);
            }
            //std::copy(start, stop, std::ostream_iterator<int>(std::cout, " "));
            //std::cout<<"\n";
        }
    }
    
    std::cout<<"Result: ";
    if (interval.first == interval.second)
        std::cout<<"No match\n";
    else
    {
        std::copy(interval.first, interval.second, std::ostream_iterator<int>(std::cout, " "));
        std::cout<<"\nSum: "<<sum<<"\n";
    }
    
    return 0;
}
0
11.04.2013, 21:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.04.2013, 21:10
Привет! Вот еще темы с решениями:

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

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

Составить программу, в которой вычислить z=(s1+s2)/(k1*k2), где s1 и k1 - сумма и количество положительных элементов массива Х[N]; s1 u k2 - сумма
Составить программу, в которой вычислить z=(s1+s2)/(k1*k2), где s1 и k1 -...

Найти такую точку заданного на плоскости множества точек, сумма расстояний от которой до остальных минимальна
осталась последняя задача по Си, от неё зависит зачёт. Условия такие: найти...


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

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

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