ENG  RUSTimus Online Judge
Online Judge
Problems
Authors
Online contests
About Online Judge
Frequently asked questions
Site news
Webboard
Links
Problem set
Submit solution
Judge status
Guide
Register
Update your info
Authors ranklist
Current contest
Scheduled contests
Past contests
Rules
back to board

Discussion of Problem 1005. Stone Pile

(C++)Есть способ получше ?
Posted by Ludmila 23 Jul 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++)Есть способ получше ?
Posted by Mahilewets 23 Jul 2017 08:41
Этот алгоритм не находит правильный ответ.
Таким образом,  более хороший способ есть.
Это такой способ,  который использует корректный алгоритм.
Почему вы решили,  что переменная  best_score хранит адрес в памяти?