Страница 1 из 1

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

Добавлено: 20 июн 2009, 14:50
uncensored
Задан массив, определить значение k, при котором сумма
|(A(1)+A(2)+…+A(k)) - (A(k+1)+…+A(N))| минимальна (то есть минимален модуль разности сумм элементов в правой и левой части, на которые массив делится этим k).
Пожалуйста , помогите начинающему :)

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

Добавлено: 20 июн 2009, 15:52
Decoder
Пиши на decoder@hotbox.ru

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

Добавлено: 20 июн 2009, 17:50
uncensored
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).
Пожалуйста , помогите начинающему :)
Неужели никто не поможет написать код такой простенькой (для про) задачки?

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

Добавлено: 21 июн 2009, 08:33
WinMain
Тебе же предложили помощь.

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

Добавлено: 21 июн 2009, 10:51
mc-black
Нетрудно, но решатели решателю (Decoder) не ставят палок в колеса.

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

Добавлено: 22 июн 2009, 17:18
uncensored
mc-black писал(а):Нетрудно, но решатели решателю (Decoder) не ставят палок в колеса.
Как бы писал ему , но ответа не получил , так что надеюсь на помощь тех , кто в состоянии помочь :)

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

Добавлено: 24 июн 2009, 06:56
Decoder
Как бы писал ему , но ответа не получил , так что надеюсь на помощь тех , кто в состоянии помочь :)
А вот это уже неправда. Не надо людей обманывать.

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

Добавлено: 24 июн 2009, 21:21
uncensored
Decoder писал(а):А вот это уже неправда. Не надо людей обманывать.
Извиняюсь , просто ответ на свое письмо получил на 3-ий день после отправки , поэтому и был написан предыдущий пост! :)

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

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

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

[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]