Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2011, 23:00   #1
grom333
Форумчанин
 
Аватар для grom333
 
Регистрация: 21.10.2008
Сообщений: 337
По умолчанию минимальная сумма подряд идущих чисел (паскаль)

Ребята подскажите алгоритм.
Есть последовательность чисел -5 10 -2 -3 4 -7 1, нужно найти минимальную сумму подряд идущих чисел.. В ответе говорится, что начинаем считать с позиции 3 и до позиции 6, т.е. ((-2)+(-3)+4+(-7))=-8.
Совсем не могу сообразить, как выполнить это задание.. Кто чем поможет?
=================================== ===========================
Мне подсказали одно решение, но оно слишком сложное для меня. Есть что-то по проще?
Код:
Const m=100;
var
        i,j,min,tempmin,s,k,N,beg,en:integer;
        x:array [1..m] of integer;
begin
Randomize;
writeln('Введите количество чисел');
readln(N);
writeln('Теперь вводите 'n,' чисел');
For i:=1 to N do
        begin
{               x[i]:=random(6);
                write(x[i]:5);}
    readln(x[i]);
        end;
writeln;
for i:= 1 to N do min:=min+x[i];
beg:=1;
en:=N;
for i:= 1 to N-1 do
        begin
                tempMin:=0;
                for j:= i to N do tempMin:=tempMin+x[j];
                        if TempMin<min then min:=TempMin;                       
                tempMin:=0;
                for j:= 1 to i do tempMin:=tempMin+x[j];
                if TempMin<min then     min:=TempMin;           
                for j:= i+1 to n do
                        begin
                                tempMin:=0;                             
                                for k:= i to j do tempMin:=tempMin+x[k];                        
                                if TempMin<min then     min:=TempMin;
                        end;    
        end;
writeln('Минимальная сумма = ',min);
readln;
end.
Лучше быть последним из львов, чем первым среди шакалов.
Мой чат
community on struggle with zoomics

Последний раз редактировалось grom333; 14.01.2011 в 23:16.
grom333 вне форума Ответить с цитированием
Старый 14.01.2011, 23:30   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
нужно найти минимальную сумму подряд идущих чисел
Тупость какая-то... Минимальная сумма в твоем ряду будет равняться минимальному элементу.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.01.2011, 02:11   #3
Косюра
Пользователь
 
Аватар для Косюра
 
Регистрация: 14.01.2011
Сообщений: 74
По умолчанию

Кому в голову придет какой то умный алгоритм - пишите. Очень тупая, но интересная задача.
Девушка - переменная бинарного типа с рандомным значением
Косюра вне форума Ответить с цитированием
Старый 15.01.2011, 02:53   #4
Ezhuk
Форумчанин
 
Регистрация: 09.10.2010
Сообщений: 217
По умолчанию

Можно решить влоб, просмотреть все возможные последовательности
(не знаю паскаль так, что напишу на С. Надеюсь будет понятно)

Код:
int S=A[0],sum;
       for(int i=0;i<N;i++){// i начальный элемент последовательности 
		for(int j=i;j<N;j++){ // j последний элемент последовательности 
			 sum=0;
			 for(int temp=i;temp<=j;temp++)//считает сумму ряда от i до j элемента
					sum+=A[temp];
			 if(S>sum)  
					S=sum;
		 }
	}
Ёж птица гордая, пока не пнешь не полетит.
Ezhuk вне форума Ответить с цитированием
Старый 15.01.2011, 02:58   #5
Косюра
Пользователь
 
Аватар для Косюра
 
Регистрация: 14.01.2011
Сообщений: 74
По умолчанию

Ezhuk, а можно теперь для тупых еще раз. Я просто в С - ноль, потому не всё поняла..
Код:
sum+=A[temp];
это что? Он в сумму прибавляет A[temp]? а че такое A[temp], я ниче не поняла(
Девушка - переменная бинарного типа с рандомным значением

Последний раз редактировалось Косюра; 15.01.2011 в 03:01.
Косюра вне форума Ответить с цитированием
Старый 15.01.2011, 03:02   #6
XeruH
Форумчанин
 
Регистрация: 17.09.2010
Сообщений: 229
По умолчанию

Цитата:
Сообщение от Косюра Посмотреть сообщение
Ezhuk, а можно теперь для тупых еще раз. Я просто в С - ноль, потому не всё поняла..
Код:
sum+=A[temp];
это что?
Насколько помню это как в Паскале
Код:
sum:=sum+A[temp]
Правильно заданный вопрос - половина ответа!
XeruH вне форума Ответить с цитированием
Старый 15.01.2011, 03:02   #7
Ezhuk
Форумчанин
 
Регистрация: 09.10.2010
Сообщений: 217
По умолчанию

Это сокращенная запись sum=sum+A[temp];
Ёж птица гордая, пока не пнешь не полетит.
Ezhuk вне форума Ответить с цитированием
Старый 15.01.2011, 03:03   #8
Косюра
Пользователь
 
Аватар для Косюра
 
Регистрация: 14.01.2011
Сообщений: 74
По умолчанию

О. Тогда всё. Всё понятно) Спасибо огромное))
Девушка - переменная бинарного типа с рандомным значением
Косюра вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Максимальное кол-во подряд идущих элементов одн. массива cheef Паскаль, Turbo Pascal, PascalABC.NET 6 17.06.2010 13:17
Задача о шести подряд идущих единицах. llTibegll Помощь студентам 11 06.11.2009 10:04
Массив чисел (найти 4 идущих подряд чётных числа) SeregaKo Общие вопросы Delphi 2 18.05.2009 23:09
найти подпоследовательность из подряд идущих элементов с наибольшей суммой на С++ aj_tramp Помощь студентам 2 12.12.2008 08:57