Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Несколько задач, которые не проходят несколько проверок
первые 5 строчек - это своеобразный ключ
последние 5 строчек - замок, к которому нужно "примерить" ключ.
Как это все происходит:
давайте представим, что ключ - это бумажка (0 - отверстие, 1 - сам лист).
а замок - это буквы, написанные на листе
Нам нужно определить, подходит ли ключ. А подходит он только в том случае, если после наложения останутся буквы t, s, t, a, r (то есть их положение совпадет с нулями).
Важное замечание! ключ можно поворачивать по часовой стрелке до 3х раз. то есть наложили, если не подошел, перевернули, опять наложили и т.д.
В ответ надо вывести No, если ключ не подходит, либо, если подходит:
for($i=0;$i<4;$i++){// "запоминаем" буквы, которые были на месте дырок во всех случаях
foreach($key[$i]as$k=>$v){//если попали на 0, то записываем в массив answ букву, которая на его месте
if((int)$v== 0)$answ[$i][]=$code[$k];
}
sort($answ[$i]);//сортируем массив в алфавитном порядке
if(trim($answ[$i][0])=='a'&&trim($answ[$i][1])=='r'&&trim($answ[$i][2])=='s'&&trim($answ[$i][3])=='t'&&trim($answ[$i][4])=='t'){//если все буквы подошли, то меняем сообщение
Скрипт проходит 2 из 10 тестов. не могу найти проблему. (тестирую не я. еще примеров входных файлов нет)
Задача 2
Ребята собрались на озере и решили поиграть в блинчики (кидать камушки в воду, чтобы они отскакивали). всего было N человек. Ребята договорились, что считать количество соприкосновений они будут только на дистанции L от берега.
Нужно сказать, кто из мальчиков выиграл
Входные данные:
Первая строка - число N
Вторая строка - дистанция L
последующие строки - информация о броске мальчика в формате: первая цифра H - количество соприкосновений с водой, затем H чисел - расстояний от берега до места, где камень коснулся воды
3 участника
4 - ограничение
блинчик первого мальчика каснулся с водой всего 1 раз на дистанции 1 метр от берега
блинчик второго мальчика подскочил 2 раза. 1 касание с водой на 1 метре от берега, второе - на 2
и т.д.
на выходе мы должны получить порядковый номер мальчика, который выиграл. в данном случае - 3
for($i=0,$len=strlen($str)-2;$i<=$len;$i++){// цикл будет повторяться до тех пор, пока i будет меньше или равен длине строки
for($j=2,$len2=strlen($str);$j<=$len2;$j++){// цикл повторяется до тех пор, пока j <= длине новой строки
$strarr[]=substr($str, 0,$j);//в массив заносим варианты строк. substr обрезает строку с 0 по j-й символ. то есть из строки abcd мы получим массив array(ab, abc, abcd);
}
$str=substr($str, 1);// убираем самый левый символ. то есть из строки abcd получим bcd
}
//после всех этих кругов из строки abcd получим массив: arr(ab, abc, abcd, bc, bcd, cd)
$c=0;//количество подходящих цепочек
foreach($strarras$v){//пребор массива. $v - значение элемента массива
//echo $v.'<br>';
$a=0;$b=0;
$a=substr_count($v,"a");// считаем, сколько символов 'a' в строке
p.s.комментарии делал на буква abcd, чтобы было нагляднее
И последняя задача
На каждой клетке поля размером NxN лежит цифра. Путешественник идет по полю и суммирует числа. как только он получает число K или больше, он останавливается. Нужно определить на какой клетке он остановился. Либо, если он не досчитал до числа K, то нужно вывести 0
Внимание. Свое движение человек начинает в верхнем левом углу. затем идет вправо до конца поля, спускается на 1 клетку вниз, идет до конца влево, опять спускается на 1 келтку вниз и т.д.
Заранее благодарен за помощь. я не прошу давать мне готовые исходники, можете просто подсказать, в каком месте может возникнуть ошибка при таких-то и таких-то значениях
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.