Простенькое на С#

Ответить
uncensored
Сообщения: 4
Зарегистрирован: 20 июн 2009, 14:43

Задан массив, определить значение k, при котором сумма
|(A(1)+A(2)+…+A(k)) - (A(k+1)+…+A(N))| минимальна (то есть минимален модуль разности сумм элементов в правой и левой части, на которые массив делится этим k).
Пожалуйста , помогите начинающему :)
Аватара пользователя
Decoder
Сообщения: 308
Зарегистрирован: 19 фев 2008, 23:11
Откуда: Moscow

Пиши на decoder@hotbox.ru
Поумнеть несложно, куда труднее от дури избавиться.
uncensored
Сообщения: 4
Зарегистрирован: 20 июн 2009, 14:43

uncensored писал(а):Задан массив, определить значение k, при котором сумма
|(A(1)+A(2)+…+A(k)) - (A(k+1)+…+A(N))| минимальна (то есть минимален модуль разности сумм элементов в правой и левой части, на которые массив делится этим k).
Пожалуйста , помогите начинающему :)
актуально!
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
uncensored писал(а):Задан массив, определить значение k, при котором сумма
|(A(1)+A(2)+…+A(k)) - (A(k+1)+…+A(N))| минимальна (то есть минимален модуль разности сумм элементов в правой и левой части, на которые массив делится этим k).
Пожалуйста , помогите начинающему :)
Неужели никто не поможет написать код такой простенькой (для про) задачки?
Аватара пользователя
WinMain
Сообщения: 929
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

Тебе же предложили помощь.
Аватара пользователя
mc-black
Сообщения: 250
Зарегистрирован: 08 май 2008, 16:09
Откуда: Россия, Нижний Новгород
Контактная информация:

Нетрудно, но решатели решателю (Decoder) не ставят палок в колеса.
На заказ: VBA, Excel mc-black@yandex.ru
uncensored
Сообщения: 4
Зарегистрирован: 20 июн 2009, 14:43

mc-black писал(а):Нетрудно, но решатели решателю (Decoder) не ставят палок в колеса.
Как бы писал ему , но ответа не получил , так что надеюсь на помощь тех , кто в состоянии помочь :)
Аватара пользователя
Decoder
Сообщения: 308
Зарегистрирован: 19 фев 2008, 23:11
Откуда: Moscow

Как бы писал ему , но ответа не получил , так что надеюсь на помощь тех , кто в состоянии помочь :)
А вот это уже неправда. Не надо людей обманывать.
Поумнеть несложно, куда труднее от дури избавиться.
uncensored
Сообщения: 4
Зарегистрирован: 20 июн 2009, 14:43

Decoder писал(а):А вот это уже неправда. Не надо людей обманывать.
Извиняюсь , просто ответ на свое письмо получил на 3-ий день после отправки , поэтому и был написан предыдущий пост! :)
Аватара пользователя
WinMain
Сообщения: 929
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

Если данная тема для её создателя уже не актуальна, то я выкладываю код этой задачи здесь. Может потом кому-нибудь понадобится...

Код: Выделить всё

[size=84][color=#0000ff][size=84][color=#0000ff]using[/color][/size][/color][/size][size=84] System;[/size]
[size=84][color=#0000ff][size=84][color=#0000ff]using[/color][/size][/color][/size][size=84] System.Collections.Generic;[/size]
[size=84][color=#0000ff][size=84][color=#0000ff]using[/color][/size][/color][/size][size=84] System.Text;[/size]
 
[size=84][color=#0000ff][size=84][color=#0000ff]namespace[/color][/size][/color][/size][size=84] Balance[/size]
[size=84]{[/size]
[size=84][color=#0000ff][size=84][color=#0000ff]  class [/color][/size][/color][/size][size=84][color=#2b91af][size=84][color=#2b91af]Program[/color][/size]
[/color][/size][size=84]  {[/size]
[size=84][color=#0000ff][size=84][color=#0000ff]    static [/color][/size][/color][/size][size=84][color=#0000ff][size=84][color=#0000ff]void[/color][/size][/color][/size][size=84] Main([/size][size=84][color=#0000ff][size=84][color=#0000ff]string[/color][/size][/color][/size][size=84][] args)[/size]
[size=84]    {[/size]
[size=84][color=#008000][size=84][color=#008000]      // Вычисление суммы всех элементов массива[/color][/size]
[/color][/size][size=84][color=#0000ff][size=84][color=#0000ff]      int[/color][/size][/color][/size][size=84] summ = 0;[/size]
[size=84][color=#0000ff][size=84][color=#0000ff]      foreach[/color][/size][/color][/size][size=84] ([/size][size=84][color=#0000ff][size=84][color=#0000ff]int[/color][/size][/color][/size][size=84] val [/size][size=84][color=#0000ff][size=84][color=#0000ff]in[/color][/size][/color][/size][size=84] values) summ += val;[/size]
[size=84][color=#008000][size=84][color=#008000]      // Поиск наилучшего баланса...[/color][/size]
[/color][/size][size=84][color=#0000ff][size=84][color=#0000ff]      int[/color][/size][/color][/size][size=84] left = 0, diff = summ, k = -1;[/size]
[size=84][color=#0000ff][size=84][color=#0000ff]      for[/color][/size][/color][/size][size=84] ([/size][size=84][color=#0000ff][size=84][color=#0000ff]int[/color][/size][/color][/size][size=84] n = 0; n < values.Length; ++n)[/size]
[size=84]      {[/size]
[size=84]        left += values[n];[/size]
[size=84][color=#0000ff][size=84][color=#0000ff]        int[/color][/size][/color][/size][size=84] temp = [/size][size=84][color=#2b91af][size=84][color=#2b91af]Math[/color][/size][/color][/size][size=84].Abs(summ - 2*left);[/size]
[size=84][color=#0000ff][size=84][color=#0000ff]        if[/color][/size][/color][/size][size=84] (temp <= diff)[/size]
[size=84]        {[/size]
[size=84]          diff = temp;[/size]
[size=84]          k = n;[/size]
[size=84]         }[/size]
[size=84]       }[/size]
[size=84][color=#008000][size=84][color=#008000]      // Вывод на консоль[/color][/size]
[/color][/size][size=84][color=#2b91af][size=84][color=#2b91af]      Console[/color][/size][/color][/size][size=84].WriteLine(k);[/size]
[size=84][color=#2b91af][size=84][color=#2b91af]      Console[/color][/size][/color][/size][size=84].Read();[/size]
[size=84]    }[/size]
[size=84][color=#008000][size=84][color=#008000]    // Массив для примера...[/color][/size]
[/color][/size][size=84][color=#0000ff][size=84][color=#0000ff]    static [/color][/size][/color][/size][size=84][color=#0000ff][size=84][color=#0000ff]int[/color][/size][/color][/size][size=84][] values = { 2, 0, -2, 1, 2, 3, 4, 3, 6, 5, 3, 2, 5, 7, 3, 6, 9, 5, 3, 6 };[/size]
[size=84]  }[/size]
[size=84]}[/size]
Ответить