Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Дайте задачек для относительно начинающего плз

Сообщения:  [1-10]   [11-15] 

 
 автор: bronenos   (06.02.2008 в 22:14)   письмо автору
 
   для: constructor   (01.02.2008 в 19:33)
 

Сравнение с 2 равно

   
 
 автор: constructor   (01.02.2008 в 19:33)   письмо автору
 
   для: g-tech   (01.02.2008 в 06:34)
 

даа... если честно я несильно понял саму суть алгоритма, но могу предложить свой вариант решения задачи. Решается очень просто с помощью рекурсивной функции.

  function go (x, y, a, n);  // a  - двухмерный массив. n - размер.
  {
    if (x = n) and (y = n) return a[x][y];
    if (x = n) and (y < n) return a[x][y] + go (x, y + 1, a, n);
    if (x < n) and (y = n) retrun a[x][y] + go (x + 1, y, a, n);
    if (x < n) and (y < n)
    { 
      s = go (x + 1, y, a, n);
      t = go (x, y + 1, a, n);
      if (s > t)
         return s + a[x][y]
         else return t + a[x][y];
     }
 }

Вот и сама идея... В алгоритме могут быть ошибки, не проверял.
Можно ещё добавить массив, чтобы быстрее работала, но это уже оптимизация.
P.S Когдато решал похожую задачу только на паскале. И ещё, эта задача не очень касается графов.

   
 
 автор: THERAPYbrother   (01.02.2008 в 14:59)   письмо автору
 
   для: g-tech   (01.02.2008 в 06:34)
 

где-то я видел уже.)
P.S.
как-то раз попал на сайт,там было много обычных задач,которые предлагается решить
путем какого-нибудь языка программирования,только забыл я этот сайт(((

   
 
 автор: g-tech   (01.02.2008 в 06:34)
 
   для: SHAman   (01.12.2007 в 14:33)
 

Задачка скажем так очень сильно касается теории графов!

Скажу так, я почти ноль в PHP, пока не успел изучить! Но если забыть о синтаксисе могу предложить логический ход мыслей:
- для начала надо анализировать предоставленныю матрицу, ячейки имеют двойную индексация, так сказать координаты по x и по y, соответственно в опеределенной ячейке под определенной координатой записано определенное число. Необходимо выявить соответствие координат и "количества яблок". вообщем необходимо составить двумерный массив из записей, каждая запись будет содержать следующие параметры: координата x; координата y; число яблок;
- учтем то, что в любом случае у ежа всего 8 ходов ((n*2)-2), почему это и "ежу" понятно;
- надо учесть что "еж пьян" и при передвижении его координаты только прибавляются, то есть сдвиг вправо есть x+1 сдвиг вниз есть y+1;
- начальное количество яблок то, которое находится в ячейке (1;1); Далее анализируем ячейки справа и снизу от положения "ежа", т.е. ячейки (крд яжа + 1; крд яжа) и (крд ежа; крд ежа + 1), а точнее сопоставляем значение обозначающее количество яблок в этих ячейках. Хагаем в ту ячейку в которой число яблок больше; Координатам ежа, соответственно, присваиваем координаты выбранной ячейки; Значение собранных яблок увеличиваем на число яблок в выбранной ячейке;
- учтем, что при каждом шаге необходимо проверять значение координаты x и y ежа; если x ежа равно 5, то идем далее исключительно вниз, а если y равно 5, то, соответственно вправо;

Попрошу прокомментироват если я что-то упустил!

   
 
 автор: kasmanaft   (01.12.2007 в 15:47)   письмо автору
 
   для: kasmanaft   (01.12.2007 в 15:38)
 

А вот, кстати, когда-то делал подсветку... Доделывать можно сколь угодно долго (а сейчас уже не хотца :) ), но если exp'у (или кому еще) будет интересно - выкладываю..

Всё номально подсвечивает - как и "чтобы выделяя коментарии одним цветом, не выделять в них ключевые слова и прочие лексемы (если они там окажутся)", так и "ещё если подсвечивать строки заключённые в "" или '' в которых будет \" или \' .... "

Работает, вроде, довольно быстро.

   
 
 автор: kasmanaft   (01.12.2007 в 15:38)   письмо автору
 
   для: SHAman   (01.12.2007 в 14:33)
 

Никогда не умел по-умному решать подобные задачки... Ну пока везде не пробежишься, не узнаешь же ведь как лучше бежать. Итог - тупой перебор :)

---->>

Хы.. получилось, что ежик может бегать не только по квадратным матрицам.. По любым бегает :) в том числе непрямоугольным..

   
 
 автор: SHAman   (01.12.2007 в 14:33)   письмо автору
 
   для: exp   (01.12.2007 в 12:24)
 

Надо собрать не все, а максимум яблок. Нужно проложить маршрут от 1-1 к н-н, при котором можно набрать максимальное количество яблок.

Кстати, задачка весьма интересна с точки зрения алгоритма:)

   
 
 автор: exp   (01.12.2007 в 12:24)   письмо автору
 
   для: SHAman   (30.11.2007 в 19:47)
 

в задаче с ёжиком не хватает инфы :) но он только может пройти 8 ячеек и что-бы собрать всё
надо запускать из 1:1 пять таких ёжиков ))

моя задача была нужная мне , но нечаянно стёр файл который надо-было перезаписать :(
, дайте пожалста , если знаете ссылку на справочник библиотечных функций С , просто в текстовом формате , файл ещё назывался страннол как-то SIFUNC.DSF кажется.

не скажу что правильно решил свою задачку, помоему правильнее делать как-то построчно , но мне только надо-было перезаписать , а не для постоянного использования.
например такой набросок к перл
<?php
define
('COMENT_COL''grey'); // коменты
define('STRI_COL''black'); // строки
define('P_VARS_COL''red'); // переменные
define('KEYW_COL''blue'); // ключ.сл.
define('P_OPS_COL''#222299'); // операторы
define('FNC_COL''#992222'); // функции
define('STYLE_COD''font: 26px Arial Unicode MS; color: #009900;');

function 
test_reg(&$item)
{
    
$item '#\b(' $item ')\b#i';
}

function 
codlight($document$simv ''# $simv эт так, заплатка
{
if (
$simv !== ''$document str_replace('\\' $simv$simv$document);

$document str_replace(array('<''>''"'), array('&lt;''&gt;''&quot;'), $document); 
    
# строки 
$str '#((\'|&quot;).*?((?<!\x5c)\\2))#s'
$replace '<font color="' STRI_COL '">$1</font>'
  
$document preg_replace($str$replace$document); 
    
# коментарии 
$str = array('"((?:(?<!\$)#|\/\/).*)$"me''#(\/\*.*?\*\/)#se'); 
$replace '\'<font color="' COMENT_COL '">\' . strip_tags(\'$1\') . \'</font>\''
  
$document preg_replace($str$replace$document); 
    
# массив
$document preg_split('#((?:<font.+?</font>\s*)+)#s'$document, -1PREG_SPLIT_DELIM_CAPTURE PREG_SPLIT_NO_EMPTY);

$p_vars '"((?:\$#?|\@|%)(\w+|\_|\~|\!))"';

$keywords = array('break''case''continue''default''die''do''else''elsif''for''foreach''if''goto''last''next''switch''return''redo''sub''until''while');
array_walk($keywords'test_reg');

$funcshns = array('chop''close''closedir''delete''each''eof''eval'
    
'fopen',  'fwrite''grep''index''join','keys''length'
    
'open''opendir''pack''pop''print''printf''push',
    
'require''reverse''rindex','rewinddir',  
    
'scalar''seek''seekdir''shift''sort''splice''split''sprintf'
    
'substr''sysread''syswrite''telldir',
    
'_toupper''tzset''ultoa''umask''unshift''unpack');    
array_walk($funcshns'test_reg');

$p_ops '#((&(?:lt|gt);|[\*\+\/\-\=\!\?\|\~\.\,\:\;\[\]\(\)\{\}\|]+|&+)[\2]*?\s*)#s';

for (
$i 0$i count($document); $i++)
{
    if (
strpos($document$i ],'<') === 0) continue;
    
$document$i ] = preg_replace($p_ops'<font color="' P_OPS_COL '"><b>$1</b></font>'$document$i ]);
    
$document$i ] = preg_replace($p_vars'<font color="' P_VARS_COL '"><b>$1</b></font>'$document$i ]);
    
$document$i ] = preg_replace($keywords'<font color="' KEYW_COL '"><b>$1</b></font>'$document$i ]);
    
$document$i ] = preg_replace($funcshns'<font color="' FNC_COL '"><b>$1</b></font>'$document$i ]);    
}

return  
'<pre style="' STYLE_COD '">' implode(''$document) . '</pre>';
}

$contents file_get_contents('Perl' $pg '.txt'); 
echo 
$contents preg_replace('#[perl](.+?)[/perl]#se'"codlight('\\1', '\"')"$contents );
?>
с файлом 50kb работает где-то 0.4 секунды ,а эт много

   
 
 автор: SHAman   (30.11.2007 в 19:47)   письмо автору
 
   для: exp   (28.11.2007 в 01:57)
 

Могу предложить задачку, про которую мне рассказал друг. Им такую задачку давали на олимпиаде по программированию, когда он в школе учился.

есть квадратная матрица. Любого размера. Пусть, 5х5. Каждая клетка матрицы - сад. В каждом саду есть яблоки. Количество яблок указано в ячейке матрицы. В ячейке 1:1 есть ёжик. Ёжик немного пьян, поэтому может бежать только вправо и вниз по матрице, собирая по пути все живое(яблоки). Задача у ёжика совсем непростая: таким вот зигзугом пробежать до ячейки n:n (у нас 5:5) и собрать по пути максимально возможное количество яблок.

Задачка кажется простой, но на самом деле имеет очень элегантное и красивое решение.

Если отойти от абстрактных задачек и подойти к практическим, дающим опыт, то нужно делать что-то конкретное, которым можно пользоваться. Я вот написал пару сайтов, постоянно решаю задачки какие-то, использую программы в повседневной жизни. Нужна мне прога для красивого однотипного переименования файлов в указанной директории по шаблону - написал. Заодно C# немного поизучал. Нужна прога, которая чистит html из ворда - написал. Просто делайте мир лучше и опыт придет.

   
 
 автор: exp   (28.11.2007 в 01:57)   письмо автору
 
   для: Trianon   (28.11.2007 в 00:40)
 

и ещё если подсвечивать строки заключённые в "" или '' в которых будет \" или \'
например
<pre>
 #include <stdio.h>
    main ()       /* Преобразовать шестьнадцатеричное или восьмеричное
                    число к десятичному виду */
    {
     int numassigned,val;
     printf("Введи шестьнадцатеричное и восьмеричное #, или 00 выход:\n");
     do  {
          printf(" #=");
          numassigned = scanf("%i, &val);
          printf("Десятичное = %i\n", val);
          }
      while ( val && numassigned);
      /* Цикл закончится, когда введут 00 или scanf не сможет
         преобразовать входное поле */
    }  
</pre>
если будет printf("\"Десятичное\" число = %i\n", val);

до этого я пока не додумывался :) но подсвеченные слова обесцветил в комментариях

   

Сообщения:  [1-10]   [11-15] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования