кроссворды, задачки, головоломки

Сборник задач разного уровня сложности по математике, информатике, физике, химии, программированию, экономике etc. Логические задачи, SQL задачи, решение задач. Задачи с ответами, а также нерешённые задачи.

Petruchek.Info

Поменять местами части массива

Добавлено: 07.02.09 в 12:30
Метки: информатика

Дана таблица А[1..n], заполненная целыми числами.

Требуется поменять местами элементы с номерами от 1 до m и от m+1 до n.

Порядок элементов в каждой из частей должен быть сохранен.

Использовать вспомогательную таблицу запрещено.

Каждый элемент должен быть перемещен не более одного раза.

У этой задачи пока что нет ответа/решения. Вы можете прислать свой вариант в комментарии.

источник: Запорожская областная олимпиада по информатике, 1992

Комментарии
Google says:
Роман (26.06.09):
<?
$A = array();
$n = 100;
$m = 50;
for($i=1; $i<=$n; $i++)
{
$A[$i] = $i;
}
//**********************
for($j=1; $j<=$m; $j++)
{
$tmpElem = $A[$n];
for($i=$n; $i>1; $i--)
{
$A[$i] = $A[$i-1];
}
$A[1] = $tmpElem;
}
//**********************
print_r($A);
?>
Аноним (16.02.10):
Роману: ну и чаво? каждый элемент у тебя сдвигается M раз, а по условию должен сдвигаться только однажды. кроме того, $tmpElem -- это фактически вспомогательная таблица, которую по условию использовать запрещено.

хитрость тут в том, что для обмена i-того и i+m-того элементов нужно использовать такой алгоритм:

a[i]-=a[i+m];
a[i+m]+=a[i];
a[i]=a[i+m]-a[i];

вот как правильно:
<?
$A = array();
$n = 100;
$m = 50;
for($i=1; $i<=$n; $i++)
{
$A[$i] = $i;
}
//**********************
for($i=1; $i<=$m; $i++)
{
$A[$i] = $A[$i]-$A[$i+$m];
$A[$i+$m] = $A[$i+$m]+$A[$i];
$A[$i] = $A[$i+$m]-$A[$i];
}
//**********************
print_r($A);
?>

PS вообще-то говоря, редакция не указала, что M должно быть половиной N. без такой оговорки решения в общем случае не существует
Комментарий от новенького:
Новенький является
Новенький не робот
Знаки на картинке: латинские буквы, арабские цифры


Есть на сайте: Онлайн кроссворды Задачи Онлайн игры Блог
Все работы, опубликованные на сайте — авторские, если не указано иное. Перепечатка возможна только с письменного разрешения владельцев ресурса, с обязательной ссылкой на сайт petruchek.info. Пишите нам: . Сайт должен работать в IE, FF, Opera, Safari.

Реклама:

Разработано в студии "Webous"о проектесайта карта

Реклама: Моделям и производителю, домашний спортивный комплекс kampfer.