ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1005. Куча камней

(C++)Есть способ получше ?
Послано Ludmila 23 июл 2017 03:19
Я решала эту задачу с использованием массивов
Сначала переменной N  даётся значение которое определяет количетво камней.
Потм N  раз ожидается w  или вес каждого камня.
 W-s  кладутся в первый массив (или первая куча камней)
Потом во второй массив кладётся последний элемент из первого , и из первого он же вычитается.  Есть две переменные M1 , которая равняется сумме элементов первого массива и M2 которая всегда равняется сумме элементов второго . Идет проверка , если ещё не было числа меньше чем разность между измененными массивом1 и массивом2 , или если это первый раз , если эти условия верны , то переменная
BestScore  куда сохраняется самая меньшая разность из всех перечиссленных , становится равной новой разности.Потом берется следующий последний элемент из первого массива , прибавляется ко вторму , вычитается из первого , и так  N  раз .
В конце выводится на экран самамая минимальная разность между двумя кучами которая была найденна.
Вроде бы план правильный,но почемуто разности не выводятся на экран ,а что то другое
наверное то место в памяти  где они находятся


вот код от задачи про камни

#include <iostream>

using namespace std;

int main()
{
int N;
int w;
int best_score;
int join1[w];
int M1;
int join2[w];
int M2;
 int inc_index;
cin>>N;
if((N>=1)&(N<=20))
{
 for( inc_index=1;inc_index<=N;++inc_index) //inc index
 {
cin>>w;
if((w<=100000)&(w>=1))
   {
       join1[inc_index]=w;
       M1=M1+join1[inc_index];
   }
else
   {
cout<<"muito pesada!"<<endl;
   }

 }
inc_index=0;
for(int dec_index=N;dec_index>=0;--dec_index)//dec index
 {
inc_index=inc_index+1;

join2[inc_index]=join1[dec_index];
M2=M2+join1[dec_index];

if((M1-M2<best_score)||(M1-M2>best_score&dec_index==N))
    {
   best_score=M1-M2;
   }
 }
 cout<<best_score<<endl;
}



else
{
cout<<"muitas pedras"<<endl;
}

    return 0;
}
Re: (C++)Есть способ получше ?
Послано Mahilewets 23 июл 2017 08:41
Этот алгоритм не находит правильный ответ.
Таким образом,  более хороший способ есть.
Это такой способ,  который использует корректный алгоритм.
Почему вы решили,  что переменная  best_score хранит адрес в памяти?