Форум программистов, компьютерный форум CyberForum.ru

max сумма в одномерном массиве - C++

Восстановить пароль Регистрация
 
nice4ertik
 Аватар для nice4ertik
0 / 0 / 0
Регистрация: 31.05.2011
Сообщений: 5
31.05.2011, 15:51     max сумма в одномерном массиве #1
на входе имеется массив x из n целых чисел,на выходе должна быть получена максимальная сумма любой непрерывной последовательности элементов массива.
пример вводимых чисел: 31 -41 59 26 -53 58 97 -93 -23 84
результат: 59+26+(-53)+97=187

формат выходных данных (test.in):
в первой строке файла записанно число n.
в последующих n строках записанны числа x[1],x[2],...,x[n].

Формат выходных данных (test.out):
в первой строке файла должен быть записан результат-максимальная сумма любой непрерывной последовательности

примечания:
|x[i]|<100
0<n<60000


помогите написать исходник..
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2011, 15:51     max сумма в одномерном массиве
Посмотрите здесь:

C++ О одномерном массиве
C++ Не могу найти ошибку с подсчетом суммы элементов в интервале[a,b] в динамическом одномерном массиве массиве.
C++ В одномерном массиве, состоящем из вещественных элементов вычислить номер минимального элемента в массиве, сумму элементов массива
C++ min и max в одномерном массиве с++
C++ В Одномерном массиве
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
31.05.2011, 16:28     max сумма в одномерном массиве #2
Либо я не понял задание, либо у вас что-то с математикой...
59+26+(-53)+97=129 как бы
А в этой последовательности моя прога выдает 177, не знаю почему, не проверял=)
Проверьте
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <fstream>
#define size 60000
int main(){
    int n,a[size],i=0,max=-60000,j;
    std::fstream in("test.in");
    in >> n;
    for (int sum; i < n; i++){
        sum=0;
        in >> a[i];
        for (j=0; j < i; j++)
            sum+=a[j];
        if (sum > max) max=sum;
    }
    std::ofstream out("test.out");
    out << max;
    return 0;
}
nice4ertik
 Аватар для nice4ertik
0 / 0 / 0
Регистрация: 31.05.2011
Сообщений: 5
31.05.2011, 17:32  [ТС]     max сумма в одномерном массиве #3
Цитата Сообщение от diagon Посмотреть сообщение
Либо я не понял задание, либо у вас что-то с математикой...
59+26+(-53)+97=129 как бы
А в этой последовательности моя прога выдает 177, не знаю почему, не проверял=)

}[/CPP]
я 58 пропустила..
а если числа вбиваются пользователем..
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
31.05.2011, 19:31     max сумма в одномерном массиве #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#define size 60000
int main(){
        int n,a[size],i=0,max=-60000,j;
        std::cin >> n;
        for (int sum; i < n; i++){
                sum=0;
                std::cin >> a[i];
                for (j=0; j < i; j++)
                        sum+=a[j];
                if (sum > max) max=sum;
        }
        std::cout << max;
        return 0;
}
Добавлено через 16 минут
Извиняюсь, ошибочка вышла... Недопонял условие
А вообще интересная задача=)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#define size 60000
int main(){
        int n,a[size],i=0,max=-60000,j,sum,x;
        std::cin >> n;
        while (i < n)  
        std::cin >> a[i++];
        for (i=0; i < n; i++)
        for (j=n-1; j >=0; j--){
            sum =0;
            for (x=i; x <= j; x++)
            sum+=a[x];
            if (sum>max) max=sum;
        }       
        std::cout << max;
        return 0;
}
Добавлено через 3 минуты
Это если вбиваются пользователем, вот с файлами
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <fstream>
#define size 60000
int main(){
        int n,a[size],i=0,max=-60000,j,sum,x;
        std::ifstream in("test.in");
        in >> n;
        while (i < n)  
            in >> a[i++];
        for (i=0; i < n; i++)
            for (j=n-1; j >=0; j--){
                sum =0;
                for (x=i; x <= j; x++)
                
                if (sum>max) max=sum;
            }       
        std::ofstream("test.out") << max;
        return 0;
}
Yandex
Объявления
31.05.2011, 19:31     max сумма в одномерном массиве
Ответ Создать тему
Опции темы

Текущее время: 14:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru