Задачка Дано 100 карточек выложенные в строку. На каждой карточке написано по одной цифре. Можно или нельзя выложить так карточки чтобы не одно число не было на том же самом месте? Надо найдите хотя бы один вариант расположения карточек. Напишите решения идеи описание. Объясните задачку и как пишется эта идея. Или тут надо алгоритм написать? И еще будит ли перестановка засчитана если поменяем два одинаковых числа местами?
Моя идея Проверить на одинаковые цифры рядом и их переместить одну на -1 позицию и потом заного проверить если есть еще такие числа и потом все числа сдвинуть влево на одну позицию.
--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
Например, если данная строка карточек выглядит так (используем цифры от 0 до 5):
2 4 3 3 2 0 2 5 0
- то массив Cards получится (после работы этой строки) таким:
2 0 3 2 1 1
Это значит, что у нас есть 2 нуля, ноль единиц, 3 двойки, 2 тройки, 1 четверка и 1 пятерка. Этот массив мы будем использовать при переборе различных комбинаций.
мне всё ровно не доходит как так получилось из этого Inc(Cards[Ini[i]]); все числа 2 0 3 2 1 1 можете объяснить ? а так если смотреть то дальше идет так Arrange(1) обращаемся к функции
Код
k:=1 i:=0 if (0<>2)and(2>0) then begin Res[k]:=0; Dec(Cards[i]); 1 0 3 2 11 f:=(k=n)or Arrange(k+1); k:=2
if (0<>4)and(1>0) then begin Res[k]:=0; Dec(Cards[i]); 0 0 3 2 11 f:=(k=n)or Arrange(k+1); k:=3
if (0<>3)and(0>0) then begin inc(i) i=1
if (1<>3)and(0>0) then begin inc(i) i=2
if (2<>3)and(3>0) then begin Res[k]:=2; Dec(Cards[i]); 0 0 2 2 11 f:=(k=n)or Arrange(k+1); k:=4
if (0<>3)and(0>0) then begin inc(i) i=1
if (1<>3)and(0>0) then begin inc(i) i=2
if (2<>3)and(2>0) then begin Res[k]:=2; Dec(Cards[i]); 0 0 1 2 1 1 f:=(k=n)or Arrange(k+1); k:=5
if (0<>2)and(0>0) then begin inc(i) i=1
if (1<>2)and(0>0) then begin inc(i) i=2
if (2<>2)and(1>0) then begin inc(i) i=3
if (3<>2)and(2>0) then begin Res[k]:=3; Dec(Cards[i]); 0 0 1 1 1 1 f:=(k=n)or Arrange(k+1); k:=6
if (0<>0)and(0>0) then begin inc(i) i=1
if (1<>0)and(0>0) then begin inc(i) i=2
if (2<>0)and(1>0) then begin Res[k]:=2; Dec(Cards[i]); 0 0 0 1 1 1 f:=(k=n)or Arrange(k+1); k:=7
if (0<>2)and(0>0) then begin inc(i) i=1
if (1<>2)and(0>0) then begin inc(i) i=2
if (2<>2)and(0>0) then begin inc(i) i=3
if (3<>2)and(1>0) then begin Res[k]:=3; Dec(Cards[i]); 0 0 0 0 1 1 f:=(k=n)or Arrange(k+1); k:=8
if (0<>5)and(0>0) then begin inc(i) i=1
if (1<>5)and(0>0) then begin inc(i) i=2
if (2<>5)and(0>0) then begin inc(i) i=3
if (3<>5)and(0>0) then begin inc(i) i=4 if (4<>5)and(1>0) then begin Res[k]:=4; Dec(Cards[i]); 0 0 0 0 0 1 f:=(k=n)or Arrange(k+1); k:=9; сейчас все будут гнать к i:=5 и тогда
if (5<>0)and(1>0) then begin Res[k]:=5; Dec(Cards[i]); 0 0 0 0 0 0 f:=(9=9);
Inc(Cards[i]) 0 0 0 0 0 1 вот это не очень понел я
until f or(i>m); Arrange:= f
и все конец запишут наверное так 0 0 2 2 3 2 3 4 5 Inc(Cards[i]) я вот этого не понял
и как еще этот текст скрыть
Сообщение отредактировано: maksimla -
--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.