HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #5851  
Старый 20.03.2010, 22:48
skagen
Участник форума
Регистрация: 08.01.2010
Сообщений: 155
С нами: 8599678

Репутация: 22
По умолчанию

Цитата:
Сообщение от emillord  
Лови
http://muzorka.ru/index.php?showtopic=16060
спасибо,выручил
 
Ответить с цитированием

  #5852  
Старый 21.03.2010, 11:07
e[X]theta[M]ine
Познающий
Регистрация: 21.12.2009
Сообщений: 97
С нами: 8625600

Репутация: 53
По умолчанию

Парни с этой задачей у меня конкретный ступор
Вы можете вспомнить хоть одного своего знакомого до двадцатилетнего возраста, который в детстве не играл в компьютерные игры? Если да, то может быть вы и сами не знакомы с этим развлечением? Впрочем, трудностей при решении этой задачи это создать не должно.

Во многих старых играх с двумерной графикой можно столкнуться с подобной ситуацией. Какой-нибудь герой прыгает по платформам (или островкам), которые висят в воздухе. Он должен перебраться от одного края экрана до другого. При этом при прыжке с одной платформы на соседнюю, у героя уходит |y2-y1| единиц энергии, где y1 и y2 – высоты, на которых расположены эти платформы. Кроме того, у героя есть суперприем, который позволяет перескочить через платформу, но на это затрачивается 3*|y3-y1| единиц энергии. Конечно же, энергию следует расходовать максимально экономно.

Предположим, что вам известны координаты всех платформ в порядке от левого края до правого. Сможете ли вы найти, какое минимальное количество энергии потребуется герою, чтобы добраться с первой платформы до последней?
Входные данные

В первой строке входного файла INPUT.TXT записано количество платформ n (1 ≤ n ≤ 30000). Вторая строка содержит n натуральных чисел, не превосходящих 30000 – высоты, на которых располагаются платформы.
Выходные данные

В выходной файл OUTPUT.TXT запишите единственное число – минимальное количество энергии, которую должен потратить игрок на преодоление платформ (конечно же в предположении, что cheat-коды использовать нельзя).
 
Ответить с цитированием

  #5853  
Старый 21.03.2010, 21:24
n1ghtstalker
Познающий
Регистрация: 28.09.2008
Сообщений: 65
С нами: 9273261

Репутация: 8
По умолчанию

Цитата:
Сообщение от e[X]theta[M]ine  
Парни с этой задачей у меня конкретный ступор
Вы можете вспомнить хоть одного своего знакомого до двадцатилетнего возраста, который в детстве не играл в компьютерные игры? Если да, то может быть вы и сами не знакомы с этим развлечением? Впрочем, трудностей при решении этой задачи это создать не должно.

Во многих старых играх с двумерной графикой можно столкнуться с подобной ситуацией. Какой-нибудь герой прыгает по платформам (или островкам), которые висят в воздухе. Он должен перебраться от одного края экрана до другого. При этом при прыжке с одной платформы на соседнюю, у героя уходит |y2-y1| единиц энергии, где y1 и y2 – высоты, на которых расположены эти платформы. Кроме того, у героя есть суперприем, который позволяет перескочить через платформу, но на это затрачивается 3*|y3-y1| единиц энергии. Конечно же, энергию следует расходовать максимально экономно.

Предположим, что вам известны координаты всех платформ в порядке от левого края до правого. Сможете ли вы найти, какое минимальное количество энергии потребуется герою, чтобы добраться с первой платформы до последней?
Входные данные

В первой строке входного файла INPUT.TXT записано количество платформ n (1 ≤ n ≤ 30000). Вторая строка содержит n натуральных чисел, не превосходящих 30000 – высоты, на которых располагаются платформы.
Выходные данные

В выходной файл OUTPUT.TXT запишите единственное число – минимальное количество энергии, которую должен потратить игрок на преодоление платформ (конечно же в предположении, что cheat-коды использовать нельзя).
ну по алгоритму примерно скажу :
рассчитываем разность между y2-y1 и y3-y1 , если
y2-y1 > 3*(y3-y1) то выбираем этот путь в инном случае наоборот.

ну и собственно в переменную суммируются результаты всех минимальных выбранных путей.

Последний раз редактировалось n1ghtstalker; 21.03.2010 в 21:27..
 
Ответить с цитированием

  #5854  
Старый 21.03.2010, 22:59
Soherox
Познающий
Регистрация: 17.02.2010
Сообщений: 45
С нами: 8542140

Репутация: 47
По умолчанию

Цитата:
но на это затрачивается 3*|y3-y1| единиц
Если высоты будут равны (y3 = y1), то затрачивается значит 0 энергии? Если да, то n1ghtstalker, Ваш алгоритм не работает, в этом случае надо динамикой решать

Последний раз редактировалось Soherox; 21.03.2010 в 23:02..
 
Ответить с цитированием

  #5855  
Старый 21.03.2010, 23:53
n1ghtstalker
Познающий
Регистрация: 28.09.2008
Сообщений: 65
С нами: 9273261

Репутация: 8
По умолчанию

Цитата:
Сообщение от Soherox  
Если высоты будут равны (y3 = y1), то затрачивается значит 0 энергии? Если да, то n1ghtstalker, Ваш алгоритм не работает, в этом случае надо динамикой решать
дело всё в том что в условии задачи оговорено только перемещение по y. но никак не по x.
если бы y- было осью абцисс , то в любом случае ++ , так что мой алгоритм относительно не верен.
я лишь следую условию задачи.
 
Ответить с цитированием

  #5856  
Старый 21.03.2010, 23:59
EndLeSSDre@M
Участник форума
Регистрация: 18.07.2009
Сообщений: 278
С нами: 8850305

Репутация: 259
По умолчанию

А если подумать... ведь действительно если высоты у3 и у1 равны... то ведь тогда энергии 0 получается?!?!?? но так n1ghtstalker относительно прав...вычисляем разницу и сравниваем
 
Ответить с цитированием

  #5857  
Старый 22.03.2010, 00:05
Soherox
Познающий
Регистрация: 17.02.2010
Сообщений: 45
С нами: 8542140

Репутация: 47
По умолчанию

Соглашусь с Вами друзья, ждем подробностей от автора, но если что, вот код по алгоритму n1ghtstalker


Код:
{$APPTYPE CONSOLE}
const
  ch = 30000;
var
  i, j, n, rez: integer;
  a: array [1..ch] of integer;

begin
  reset(input, 'input.txt');
  rewrite(output, 'output.txt');
  readln(n);
  rez:=0;
  for i:=1 to n do read(a[i]);
  i:=1;
  while i<n do
    begin
      if n - i >= 3 then
        begin
          if abs(a[i]-a[i+1])+abs(a[i+1]-a[i+2]) < 3*abs(a[i+2] - a[i]) then
            begin
              rez:=rez + abs(a[i]-a[i+1]);
              inc(i);
            end
         else
           begin
             rez:=rez + 3*abs(a[i+2] - a[i]);
             inc(i, 2);
           end;
        end
      else
        begin
          rez:=rez + abs(a[i]-a[i+1]);
          inc(i);
        end;
    end;
  writeln(rez);
  close(input);
  close(output);
end.
Если все же y3 = y1, и энергия в этом случае = 0, то код будет валится

P.S. Код писался на Delphi, если нужно на паскаль, то удаляем {$APPTYPE CONSOLE}, и вместо
Код:
  reset(input, 'input.txt');
  rewrite(output, 'output.txt');
это

Код:
  assign(input, 'input.txt');
  assign(output, 'output.txt');
  reset(input);
  rewrite(output);

Последний раз редактировалось Soherox; 22.03.2010 в 00:11..
 
Ответить с цитированием

  #5858  
Старый 22.03.2010, 16:33
akimov_aleks
Новичок
Регистрация: 03.05.2009
Сообщений: 22
С нами: 8959525

Репутация: 0
По умолчанию

подскажите плиз как нати рабочую прокси.
есть код для проверки переменная с переберает по списку если рабочая прокся то идем дальше а если нет как вернуть цикл чтоб начил дальше переберать...?
Код:
{Начало проверки прокси}

begin
// грузим фаил с проксями
  ProxyList:=tstringlist.Create;
  ProxyList.LoadFromFile('Proxy.txt');
  params:=TStringList.Create;
  Presponseres:=TStringList.Create;

// получаем проксю делим на ip и port ИКАК СЮДА ВЕРНУТЬСЯ
  Proxy:=ProxyList.Strings[0]; 
  ip:=getip(Proxy);
  por:=getport(Proxy);
  port:=StrToInt(por);

// тут и так понятно
  IdHTTP1.ProxyParams.ProxyServer:=ip;
  IdHTTP1.ProxyParams.ProxyPort:=port;

// начинаем проверку
    try
    IdHTTP1.Get('http://ya.ru');
    except
// вот тут если прокся мертвая  удаляем эту строку , и как вернуться выше
    end;

end;
{конец проверки прокси}
 
Ответить с цитированием

  #5859  
Старый 22.03.2010, 17:44
Dosia
Участник форума
Регистрация: 05.06.2009
Сообщений: 127
С нами: 8912059

Репутация: 249
По умолчанию

Код:
var
intA:integer;
...
{Начало проверки прокси}

begin
// грузим фаил с проксями
  ProxyList:=tstringlist.Create;
  ProxyList.LoadFromFile('Proxy.txt');
  params:=TStringList.Create;
  Presponseres:=TStringList.Create;

// получаем проксю делим на ip и port ИКАК СЮДА ВЕРНУТЬСЯ
  for intA:=0 to ProxyList.Count - 1 do begin
  Proxy:=ProxyList.Strings[intA]; 
  ip:=getip(Proxy);
  por:=getport(Proxy);
  port:=StrToInt(por);

// тут и так понятно
  IdHTTP1.ProxyParams.ProxyServer:=ip;
  IdHTTP1.ProxyParams.ProxyPort:=port;

// начинаем проверку
    try
    IdHTTP1.Get('http://ya.ru');
    except
// вот тут если прокся мертвая  удаляем эту строку , и как вернуться выше
    end;
    end;
end;
{конец проверки прокси}
 
Ответить с цитированием

  #5860  
Старый 23.03.2010, 12:40
ZnikiR
Участник форума
Регистрация: 14.01.2009
Сообщений: 194
С нами: 9116574

Репутация: 44
По умолчанию

Здравствуйте.
В общем только учу Delphi.
Возникли несколько проблем.
1)Посоветуйте хороший понятный учебник с нуля по Делфи
2)Короче нужна программа которая при запуске проверяет в файле наличия строк и если ничего не находит то записывает дынные,которые заданны.

Последний раз редактировалось ZnikiR; 23.03.2010 в 13:01..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Wi-Fi, BT] Задай вопрос - получи ответ! Alexsize Беспроводные технологии/Wi-Fi/Wardriving 2569 10.05.2026 13:27
[jQuery] - Задай вопрос, получи ответ Isis PHP 62 25.12.2009 03:25



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.