множество как вершины
множество как вершины графа, то необходимо найти гамильтонов цикл с ограничениями, приведенными в функции Can. При этом мы должны уметь выяснять для любой точки с номером k возможность построения из нее очередной стороны многоугольника.
о96_3 Достаточно известная задача. Обычно решается для небольших значений N. Пусть N=2, тогда следующая простая логика дает количество счастливых четырехзначных чисел в интервале от 0000 до 9999.
...
cnt:=0;
for i:=0 to 9 do
for j:=0 to 9 do
for l:=0 to 9 do
for k:=0 to 9 do
if i+j-l-k=0 then inc(cnt);
...
Как сделать ее независимой от значения N? Может быть, так:
Function Rec(k,Sum:integer):comp;
var i:integer;Ans:longint;
begin
if k=2*N+1 then if Sum=0 then Rec:=1{достигли конца числа и сумма цифр равна нулю - число счастливое}
else Rec:=0
else begin
Ans:=0;
for i:=0 to 9 do
if k<=N then Ans:=Ans+Rec(k+1,Sum+i)
else if i<=Sum then Ans:=Ans+Rec(k+1,Sum-i);
Rec:=Ans;
end;
end;
Красивая реализация,
Индекс
Элементарные функции
Линейные уравнения
Нелинейные уравнения
Случайные числа